View Javadoc
1   // Generated from org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4 by ANTLR 4.10.1
2   package org.apache.shardingsphere.sql.parser.autogen;
3   import org.antlr.v4.runtime.atn.*;
4   import org.antlr.v4.runtime.dfa.DFA;
5   import org.antlr.v4.runtime.*;
6   import org.antlr.v4.runtime.misc.*;
7   import org.antlr.v4.runtime.tree.*;
8   import java.util.List;
9   import java.util.Iterator;
10  import java.util.ArrayList;
11  
12  @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
13  public class SQLServerStatementParser extends Parser {
14  	static { RuntimeMetaData.checkVersion("4.10.1", RuntimeMetaData.VERSION); }
15  
16  	protected static final DFA[] _decisionToDFA;
17  	protected static final PredictionContextCache _sharedContextCache =
18  		new PredictionContextCache();
19  	public static final int
20  		T__0=1, BLOCK_COMMENT=2, INLINE_COMMENT=3, AND_=4, OR_=5, NOT_=6, TILDE_=7, 
21  		VERTICAL_BAR_=8, AMPERSAND_=9, SIGNED_LEFT_SHIFT_=10, SIGNED_RIGHT_SHIFT_=11, 
22  		CARET_=12, MOD_=13, COLON_=14, PLUS_=15, MINUS_=16, ASTERISK_=17, SLASH_=18, 
23  		BACKSLASH_=19, DOT_=20, DOT_ASTERISK_=21, SAFE_EQ_=22, DEQ_=23, EQ_=24, 
24  		NEQ_=25, GT_=26, GTE_=27, LT_=28, LTE_=29, POUND_=30, LP_=31, RP_=32, 
25  		LBE_=33, RBE_=34, LBT_=35, RBT_=36, COMMA_=37, DQ_=38, SQ_=39, BQ_=40, 
26  		QUESTION_=41, AT_=42, SEMI_=43, DOLLAR_=44, WS=45, SELECT=46, INSERT=47, 
27  		UPDATE=48, DELETE=49, CREATE=50, ALTER=51, DROP=52, TRUNCATE=53, SCHEMA=54, 
28  		GRANT=55, REVOKE=56, ADD=57, SET=58, TABLE=59, COLUMN=60, COLUMNS=61, 
29  		INDEX=62, CONSTRAINT=63, PRIMARY=64, UNIQUE=65, FOREIGN=66, KEY=67, POSITION=68, 
30  		PRECISION=69, FUNCTION=70, TRIGGER=71, PROCEDURE=72, PROC=73, VIEW=74, 
31  		INTO=75, VALUES=76, WITH=77, UNION=78, DISTINCT=79, CASE=80, WHEN=81, 
32  		CAST=82, TRIM=83, SUBSTRING=84, FROM=85, NATURAL=86, JOIN=87, FULL=88, 
33  		INNER=89, OUTER=90, LEFT=91, RIGHT=92, CROSS=93, USING=94, WHERE=95, AS=96, 
34  		ON=97, OFF=98, IF=99, ELSE=100, THEN=101, FOR=102, TO=103, AND=104, OR=105, 
35  		IS=106, NOT=107, NULL=108, TRUE=109, FALSE=110, EXISTS=111, BETWEEN=112, 
36  		IN=113, ALL=114, ANY=115, LIKE=116, ORDER=117, GROUP=118, BY=119, ASC=120, 
37  		DESC=121, HAVING=122, LIMIT=123, OFFSET=124, BEGIN=125, COMMIT=126, ROLLBACK=127, 
38  		SAVEPOINT=128, BOOLEAN=129, DOUBLE=130, CHAR=131, CHARACTER=132, ARRAY=133, 
39  		INTERVAL=134, DATE=135, TIME=136, TIMESTAMP=137, LOCALTIME=138, LOCALTIMESTAMP=139, 
40  		YEAR=140, QUARTER=141, MONTH=142, WEEK=143, DAY=144, HOUR=145, MINUTE=146, 
41  		SECOND=147, MICROSECOND=148, MAX=149, MIN=150, SUM=151, COUNT=152, AVG=153, 
42  		DEFAULT=154, CURRENT=155, ENABLE=156, DISABLE=157, CALL=158, INSTANCE=159, 
43  		PRESERVE=160, DO=161, DEFINER=162, CURRENT_USER=163, SQL=164, CASCADED=165, 
44  		LOCAL=166, CLOSE=167, OPEN=168, NEXT=169, NAME=170, COLLATION=171, NAMES=172, 
45  		INTEGER=173, REAL=174, DECIMAL=175, TYPE=176, BIT=177, SMALLINT=178, INT=179, 
46  		TINYINT=180, NUMERIC=181, FLOAT=182, BIGINT=183, TEXT=184, VARCHAR=185, 
47  		PERCENT=186, TIES=187, EXCEPT=188, INTERSECT=189, USE=190, MERGE=191, 
48  		LOOP=192, EXPAND=193, VIEWS=194, FAST=195, FORCE=196, KEEP=197, PLAN=198, 
49  		OPTIMIZE=199, SIMPLE=200, FORCED=201, HINT=202, READ_ONLY=203, DATABASE=204, 
50  		DECLARE=205, CURSOR=206, OF=207, RETURNS=208, DATEPART=209, RETURN=210, 
51  		READONLY=211, AT=212, PASSWORD=213, WITHOUT=214, APPLY=215, KEEPIDENTITY=216, 
52  		KEEPDEFAULTS=217, HOLDLOCK=218, IGNORE_CONSTRAINTS=219, IGNORE_TRIGGERS=220, 
53  		NOLOCK=221, NOWAIT=222, PAGLOCK=223, READCOMMITTED=224, READCOMMITTEDLOCK=225, 
54  		READPAST=226, REPEATABLEREAD=227, ROWLOCK=228, TABLOCK=229, TABLOCKX=230, 
55  		UPDLOCK=231, XLOCK=232, FOR_GENERATOR=233, BINARY=234, ESCAPE=235, HIDDEN_=236, 
56  		MOD=237, PARTITION=238, PARTITIONS=239, TOP=240, ROW=241, ROWS=242, UNKNOWN=243, 
57  		XOR=244, ALWAYS=245, CASCADE=246, CHECK=247, GENERATED=248, NO=249, OPTION=250, 
58  		PRIVILEGES=251, REFERENCES=252, USER=253, ROLE=254, START=255, TRANSACTION=256, 
59  		ACTION=257, ALGORITHM=258, AUTO=259, BLOCKERS=260, CLUSTERED=261, NONCLUSTERED=262, 
60  		COLLATE=263, COLUMNSTORE=264, CONTENT=265, CONVERT=266, YEARS=267, MONTHS=268, 
61  		WEEKS=269, DAYS=270, MINUTES=271, DENY=272, DETERMINISTIC=273, DISTRIBUTION=274, 
62  		DOCUMENT=275, DURABILITY=276, ENCRYPTED=277, END=278, FILESTREAM=279, 
63  		FILETABLE=280, FILLFACTOR=281, FOLLOWING=282, HASH=283, HEAP=284, IDENTITY=285, 
64  		INBOUND=286, OUTBOUND=287, UNBOUNDED=288, INFINITE=289, LOGIN=290, MASKED=291, 
65  		MAXDOP=292, MOVE=293, NOCHECK=294, NONE=295, OBJECT=296, ONLINE=297, OVER=298, 
66  		PAGE=299, PAUSED=300, PERIOD=301, PERSISTED=302, PRECEDING=303, RANDOMIZED=304, 
67  		RANGE=305, REBUILD=306, REPLICATE=307, REPLICATION=308, RESUMABLE=309, 
68  		ROWGUIDCOL=310, SAVE=311, SELF=312, SPARSE=313, SWITCH=314, TRAN=315, 
69  		TRANCOUNT=316, ZONE=317, EXECUTE=318, EXEC=319, SESSION=320, CONNECT=321, 
70  		CONNECTION=322, CATALOG=323, CONTROL=324, CONCAT=325, TAKE=326, OWNERSHIP=327, 
71  		DEFINITION=328, APPLICATION=329, ASSEMBLY=330, SYMMETRIC=331, ASYMMETRIC=332, 
72  		SERVER=333, RECEIVE=334, CHANGE=335, TRACE=336, TRACKING=337, RESOURCES=338, 
73  		SETTINGS=339, STATE=340, AVAILABILITY=341, CREDENTIAL=342, ENDPOINT=343, 
74  		EVENT=344, NOTIFICATION=345, LINKED=346, AUDIT=347, DDL=348, XML=349, 
75  		IMPERSONATE=350, SECURABLES=351, AUTHENTICATE=352, EXTERNAL=353, ACCESS=354, 
76  		ADMINISTER=355, BULK=356, OPERATIONS=357, UNSAFE=358, SHUTDOWN=359, SCOPED=360, 
77  		CONFIGURATION=361, DATASPACE=362, SERVICE=363, CERTIFICATE=364, CONTRACT=365, 
78  		ENCRYPTION=366, MASTER=367, DATA=368, SOURCE=369, FILE=370, FORMAT=371, 
79  		LIBRARY=372, FULLTEXT=373, MASK=374, UNMASK=375, MESSAGE=376, REMOTE=377, 
80  		BINDING=378, ROUTE=379, SECURITY=380, POLICY=381, AGGREGATE=382, QUEUE=383, 
81  		RULE=384, SYNONYM=385, COLLECTION=386, SCRIPT=387, KILL=388, BACKUP=389, 
82  		LOG=390, SHOWPLAN=391, SUBSCRIBE=392, QUERY=393, NOTIFICATIONS=394, CHECKPOINT=395, 
83  		SEQUENCE=396, ABORT_AFTER_WAIT=397, ALLOW_PAGE_LOCKS=398, ALLOW_ROW_LOCKS=399, 
84  		ALL_SPARSE_COLUMNS=400, BUCKET_COUNT=401, COLUMNSTORE_ARCHIVE=402, COLUMN_ENCRYPTION_KEY=403, 
85  		COLUMN_SET=404, COMPRESSION_DELAY=405, DATABASE_DEAULT=406, DATA_COMPRESSION=407, 
86  		DATA_CONSISTENCY_CHECK=408, ENCRYPTION_TYPE=409, SYSTEM_TIME=410, SYSTEM_VERSIONING=411, 
87  		TEXTIMAGE_ON=412, WAIT_AT_LOW_PRIORITY=413, STATISTICS_INCREMENTAL=414, 
88  		STATISTICS_NORECOMPUTE=415, ROUND_ROBIN=416, SCHEMA_AND_DATA=417, SCHEMA_ONLY=418, 
89  		SORT_IN_TEMPDB=419, IGNORE_DUP_KEY=420, IMPLICIT_TRANSACTIONS=421, MAX_DURATION=422, 
90  		MEMORY_OPTIMIZED=423, MIGRATION_STATE=424, PAD_INDEX=425, REMOTE_DATA_ARCHIVE=426, 
91  		FILESTREAM_ON=427, FILETABLE_COLLATE_FILENAME=428, FILETABLE_DIRECTORY=429, 
92  		FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME=430, FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME=431, 
93  		FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME=432, FILTER_PREDICATE=433, HISTORY_RETENTION_PERIOD=434, 
94  		HISTORY_TABLE=435, LOCK_ESCALATION=436, DROP_EXISTING=437, ROW_NUMBER=438, 
95  		FETCH=439, FIRST=440, ONLY=441, MONEY=442, SMALLMONEY=443, DATETIMEOFFSET=444, 
96  		DATETIME=445, DATETIME2=446, SMALLDATETIME=447, NCHAR=448, NVARCHAR=449, 
97  		NTEXT=450, VARBINARY=451, IMAGE=452, SQL_VARIANT=453, UNIQUEIDENTIFIER=454, 
98  		HIERARCHYID=455, GEOMETRY=456, GEOGRAPHY=457, OUTPUT=458, INSERTED=459, 
99  		DELETED=460, ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS=461, ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES=462, 
100 		DISABLE_BATCH_MODE_ADAPTIVE_JOINS=463, DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK=464, 
101 		DISABLE_DEFERRED_COMPILATION_TV=465, DISABLE_INTERLEAVED_EXECUTION_TVF=466, 
102 		DISABLE_OPTIMIZED_NESTED_LOOP=467, DISABLE_OPTIMIZER_ROWGOAL=468, DISABLE_PARAMETER_SNIFFING=469, 
103 		DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK=470, DISABLE_TSQL_SCALAR_UDF_INLINING=471, 
104 		DISALLOW_BATCH_MODE=472, ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS=473, ENABLE_QUERY_OPTIMIZER_HOTFIXES=474, 
105 		FORCE_DEFAULT_CARDINALITY_ESTIMATION=475, FORCE_LEGACY_CARDINALITY_ESTIMATION=476, 
106 		QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n=477, QUERY_PLAN_PROFILE=478, EXTERNALPUSHDOWN=479, 
107 		SCALEOUTEXECUTION=480, IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX=481, KEEPFIXED=482, 
108 		MAX_GRANT_PERCENT=483, MIN_GRANT_PERCENT=484, MAXRECURSION=485, NO_PERFORMANCE_SPOOL=486, 
109 		PARAMETERIZATION=487, QUERYTRACEON=488, RECOMPILE=489, ROBUST=490, OPTIMIZE_FOR_SEQUENTIAL_KEY=491, 
110 		DATA_DELETION=492, FILTER_COLUMN=493, RETENTION_PERIOD=494, CONTAINMENT=495, 
111 		PARTIAL=496, FILENAME=497, SIZE=498, MAXSIZE=499, FILEGROWTH=500, UNLIMITED=501, 
112 		KB=502, MB=503, GB=504, TB=505, CONTAINS=506, MEMORY_OPTIMIZED_DATA=507, 
113 		FILEGROUP=508, NON_TRANSACTED_ACCESS=509, DB_CHAINING=510, TRUSTWORTHY=511, 
114 		FORWARD_ONLY=512, SCROLL=513, STATIC=514, KEYSET=515, DYNAMIC=516, FAST_FORWARD=517, 
115 		SCROLL_LOCKS=518, OPTIMISTIC=519, TYPE_WARNING=520, SCHEMABINDING=521, 
116 		CALLER=522, INPUT=523, CALLED=524, VARYING=525, OUT=526, OWNER=527, ATOMIC=528, 
117 		LANGUAGE=529, LEVEL=530, ISOLATION=531, SNAPSHOT=532, REPEATABLE=533, 
118 		READ=534, SERIALIZABLE=535, NATIVE_COMPILATION=536, VIEW_METADATA=537, 
119 		AFTER=538, INSTEAD=539, APPEND=540, INCREMENT=541, CYCLE=542, CACHE=543, 
120 		MINVALUE=544, MAXVALUE=545, RESTART=546, LOB_COMPACTION=547, COMPRESS_ALL_ROW_GROUPS=548, 
121 		REORGANIZE=549, RESUME=550, PAUSE=551, ABORT=552, INCLUDE=553, DISTRIBUTED=554, 
122 		MARK=555, WORK=556, REMOVE=557, AUTOGROW_SINGLE_FILE=558, AUTOGROW_ALL_FILES=559, 
123 		READWRITE=560, READ_WRITE=561, MODIFY=562, ACCELERATED_DATABASE_RECOVERY=563, 
124 		PERSISTENT_VERSION_STORE_FILEGROUP=564, IMMEDIATE=565, NO_WAIT=566, TARGET_RECOVERY_TIME=567, 
125 		SECONDS=568, HONOR_BROKER_PRIORITY=569, ERROR_BROKER_CONVERSATIONS=570, 
126 		NEW_BROKER=571, DISABLE_BROKER=572, ENABLE_BROKER=573, MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=574, 
127 		READ_COMMITTED_SNAPSHOT=575, ALLOW_SNAPSHOT_ISOLATION=576, RECURSIVE_TRIGGERS=577, 
128 		QUOTED_IDENTIFIER=578, NUMERIC_ROUNDABORT=579, CONCAT_NULL_YIELDS_NULL=580, 
129 		COMPATIBILITY_LEVEL=581, ARITHABORT=582, ANSI_WARNINGS=583, ANSI_PADDING=584, 
130 		ANSI_NULLS=585, ANSI_NULL_DEFAULT=586, PAGE_VERIFY=587, CHECKSUM=588, 
131 		TORN_PAGE_DETECTION=589, BULK_LOGGED=590, RECOVERY=591, TOTAL_EXECUTION_CPU_TIME_MS=592, 
132 		TOTAL_COMPILE_CPU_TIME_MS=593, STALE_CAPTURE_POLICY_THRESHOLD=594, EXECUTION_COUNT=595, 
133 		QUERY_CAPTURE_POLICY=596, WAIT_STATS_CAPTURE_MODE=597, MAX_PLANS_PER_QUERY=598, 
134 		QUERY_CAPTURE_MODE=599, SIZE_BASED_CLEANUP_MODE=600, INTERVAL_LENGTH_MINUTES=601, 
135 		MAX_STORAGE_SIZE_MB=602, DATA_FLUSH_INTERVAL_SECONDS=603, CLEANUP_POLICY=604, 
136 		CUSTOM=605, STALE_QUERY_THRESHOLD_DAYS=606, OPERATION_MODE=607, QUERY_STORE=608, 
137 		CURSOR_DEFAULT=609, GLOBAL=610, CURSOR_CLOSE_ON_COMMIT=611, HOURS=612, 
138 		CHANGE_RETENTION=613, AUTO_CLEANUP=614, CHANGE_TRACKING=615, AUTOMATIC_TUNING=616, 
139 		FORCE_LAST_GOOD_PLAN=617, AUTO_UPDATE_STATISTICS_ASYNC=618, AUTO_UPDATE_STATISTICS=619, 
140 		AUTO_SHRINK=620, AUTO_CREATE_STATISTICS=621, INCREMENTAL=622, AUTO_CLOSE=623, 
141 		DATA_RETENTION=624, TEMPORAL_HISTORY_RETENTION=625, EDITION=626, MIXED_PAGE_ALLOCATION=627, 
142 		DISABLED=628, ALLOWED=629, HADR=630, MULTI_USER=631, RESTRICTED_USER=632, 
143 		SINGLE_USER=633, OFFLINE=634, EMERGENCY=635, SUSPEND=636, DATE_CORRELATION_OPTIMIZATION=637, 
144 		ELASTIC_POOL=638, SERVICE_OBJECTIVE=639, DATABASE_NAME=640, ALLOW_CONNECTIONS=641, 
145 		GEO=642, NAMED=643, DATEFIRST=644, BACKUP_STORAGE_REDUNDANCY=645, FORCE_FAILOVER_ALLOW_DATA_LOSS=646, 
146 		SECONDARY=647, FAILOVER=648, DEFAULT_FULLTEXT_LANGUAGE=649, DEFAULT_LANGUAGE=650, 
147 		INLINE=651, NESTED_TRIGGERS=652, TRANSFORM_NOISE_WORDS=653, TWO_DIGIT_YEAR_CUTOFF=654, 
148 		PERSISTENT_LOG_BUFFER=655, DIRECTORY_NAME=656, DATEFORMAT=657, DELAYED_DURABILITY=658, 
149 		AUTHORIZATION=659, TRANSFER=660, EXPLAIN=661, WITH_RECOMMENDATIONS=662, 
150 		BATCH_SIZE=663, SETUSER=664, NORESET=665, DEFAULT_SCHEMA=666, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS=667, 
151 		OLD_PASSWORD=668, PROVIDER=669, SID=670, UNCOMMITTED=671, COMMITTED=672, 
152 		STOPLIST=673, SEARCH=674, PROPERTY=675, LIST=676, SEND=677, MEMBER=678, 
153 		HASHED=679, MUST_CHANGE=680, DEFAULT_DATABASE=681, CHECK_EXPIRATION=682, 
154 		CHECK_POLICY=683, WINDOWS=684, UNLOCK=685, REVERT=686, COOKIE=687, BROWSE=688, 
155 		RAW=689, XMLDATA=690, XMLSCHEMA=691, ELEMENTS=692, XSINIL=693, ABSENT=694, 
156 		EXPLICIT=695, PATH=696, BASE64=697, ROOT=698, JSON=699, INCLUDE_NULL_VALUES=700, 
157 		WITHOUT_ARRAY_WRAPPER=701, XMLNAMESPACES=702, STATISTICS=703, FULLSCAN=704, 
158 		SAMPLE=705, RESAMPLE=706, NORECOMPUTE=707, AUTO_DROP=708, PERSIST_SAMPLE_PERCENT=709, 
159 		OPENJSON=710, OPENROWSET=711, IDENTIFIER_=712, DELIMITED_IDENTIFIER_=713, 
160 		STRING_=714, NUMBER_=715, INT_NUM_=716, FLOAT_NUM_=717, DECIMAL_NUM_=718, 
161 		HEX_DIGIT_=719, BIT_NUM_=720, NCHAR_TEXT=721;
162 	public static final int
163 		RULE_execute = 0, RULE_setTransaction = 1, RULE_isolationLevel = 2, RULE_setImplicitTransactions = 3, 
164 		RULE_implicitTransactionsValue = 4, RULE_beginTransaction = 5, RULE_beginDistributedTransaction = 6, 
165 		RULE_commit = 7, RULE_commitWork = 8, RULE_rollback = 9, RULE_rollbackWork = 10, 
166 		RULE_savepoint = 11, RULE_parameterMarker = 12, RULE_literals = 13, RULE_stringLiterals = 14, 
167 		RULE_numberLiterals = 15, RULE_dateTimeLiterals = 16, RULE_hexadecimalLiterals = 17, 
168 		RULE_bitValueLiterals = 18, RULE_booleanLiterals = 19, RULE_nullValueLiterals = 20, 
169 		RULE_identifier = 21, RULE_regularIdentifier = 22, RULE_delimitedIdentifier = 23, 
170 		RULE_unreservedWord = 24, RULE_databaseName = 25, RULE_schemaName = 26, 
171 		RULE_functionName = 27, RULE_procedureName = 28, RULE_viewName = 29, RULE_triggerName = 30, 
172 		RULE_sequenceName = 31, RULE_tableName = 32, RULE_queueName = 33, RULE_contractName = 34, 
173 		RULE_serviceName = 35, RULE_columnName = 36, RULE_scriptVariableName = 37, 
174 		RULE_owner = 38, RULE_name = 39, RULE_columnNames = 40, RULE_columnNamesWithSort = 41, 
175 		RULE_tableNames = 42, RULE_indexName = 43, RULE_constraintName = 44, RULE_collationName = 45, 
176 		RULE_alias = 46, RULE_dataTypeLength = 47, RULE_primaryKey = 48, RULE_expr = 49, 
177 		RULE_andOperator = 50, RULE_orOperator = 51, RULE_distinctFrom = 52, RULE_notOperator = 53, 
178 		RULE_booleanPrimary = 54, RULE_comparisonOperator = 55, RULE_predicate = 56, 
179 		RULE_bitExpr = 57, RULE_simpleExpr = 58, RULE_functionCall = 59, RULE_aggregationFunction = 60, 
180 		RULE_aggregationFunctionName = 61, RULE_distinct = 62, RULE_specialFunction = 63, 
181 		RULE_castFunction = 64, RULE_convertFunction = 65, RULE_charFunction = 66, 
182 		RULE_openJsonFunction = 67, RULE_openJsonWithclause = 68, RULE_jsonColumnDefinition = 69, 
183 		RULE_openRowSetFunction = 70, RULE_regularFunction = 71, RULE_regularFunctionName = 72, 
184 		RULE_caseExpression = 73, RULE_caseWhen = 74, RULE_caseElse = 75, RULE_privateExprOfDb = 76, 
185 		RULE_orderByClause = 77, RULE_orderByItem = 78, RULE_dataType = 79, RULE_dataTypeName = 80, 
186 		RULE_atTimeZoneExpr = 81, RULE_castExpr = 82, RULE_convertExpr = 83, RULE_windowedFunction = 84, 
187 		RULE_overClause = 85, RULE_partitionByClause = 86, RULE_rowRangeClause = 87, 
188 		RULE_windowFrameExtent = 88, RULE_windowFrameBetween = 89, RULE_windowFrameBound = 90, 
189 		RULE_windowFramePreceding = 91, RULE_windowFrameFollowing = 92, RULE_columnNameWithSort = 93, 
190 		RULE_indexOption = 94, RULE_compressionOption = 95, RULE_eqTime = 96, 
191 		RULE_eqOnOffOption = 97, RULE_eqKey = 98, RULE_eqOnOff = 99, RULE_onPartitionClause = 100, 
192 		RULE_partitionExpressions = 101, RULE_partitionExpression = 102, RULE_numberRange = 103, 
193 		RULE_lowPriorityLockWait = 104, RULE_onLowPriorLockWait = 105, RULE_ignoredIdentifier = 106, 
194 		RULE_ignoredIdentifiers = 107, RULE_matchNone = 108, RULE_variableName = 109, 
195 		RULE_executeAsClause = 110, RULE_transactionName = 111, RULE_transactionVariableName = 112, 
196 		RULE_savepointName = 113, RULE_savepointVariableName = 114, RULE_entityType = 115, 
197 		RULE_ifExists = 116, RULE_tableHintLimited = 117, RULE_call = 118, RULE_explain = 119, 
198 		RULE_explainableStatement = 120, RULE_createTable = 121, RULE_createTableClause = 122, 
199 		RULE_createIndex = 123, RULE_createDatabase = 124, RULE_createFunction = 125, 
200 		RULE_createProcedure = 126, RULE_createView = 127, RULE_createTrigger = 128, 
201 		RULE_createSequence = 129, RULE_createService = 130, RULE_createSchema = 131, 
202 		RULE_alterTable = 132, RULE_alterIndex = 133, RULE_alterDatabase = 134, 
203 		RULE_alterProcedure = 135, RULE_alterFunction = 136, RULE_alterView = 137, 
204 		RULE_alterTrigger = 138, RULE_alterSequence = 139, RULE_alterService = 140, 
205 		RULE_alterSchema = 141, RULE_dropTable = 142, RULE_dropIndex = 143, RULE_dropDatabase = 144, 
206 		RULE_dropFunction = 145, RULE_dropProcedure = 146, RULE_dropView = 147, 
207 		RULE_dropTrigger = 148, RULE_dropSequence = 149, RULE_dropService = 150, 
208 		RULE_dropSchema = 151, RULE_truncateTable = 152, RULE_updateStatistics = 153, 
209 		RULE_statisticsWithClause = 154, RULE_sampleOption = 155, RULE_statisticsOptions = 156, 
210 		RULE_statisticsOption = 157, RULE_fileTableClause = 158, RULE_createDefinitionClause = 159, 
211 		RULE_createTableDefinitions = 160, RULE_createTableDefinition = 161, RULE_columnDefinition = 162, 
212 		RULE_columnDefinitionOption = 163, RULE_encryptedOptions = 164, RULE_columnConstraint = 165, 
213 		RULE_computedColumnConstraint = 166, RULE_computedColumnForeignKeyConstraint = 167, 
214 		RULE_computedColumnForeignKeyOnAction = 168, RULE_primaryKeyConstraint = 169, 
215 		RULE_diskTablePrimaryKeyConstraintOption = 170, RULE_clusterOption = 171, 
216 		RULE_primaryKeyWithClause = 172, RULE_primaryKeyOnClause = 173, RULE_onSchemaColumn = 174, 
217 		RULE_onFileGroup = 175, RULE_onString = 176, RULE_memoryTablePrimaryKeyConstraintOption = 177, 
218 		RULE_withBucket = 178, RULE_columnForeignKeyConstraint = 179, RULE_foreignKeyOnAction = 180, 
219 		RULE_foreignKeyOn = 181, RULE_checkConstraint = 182, RULE_columnIndex = 183, 
220 		RULE_withIndexOption = 184, RULE_indexOnClause = 185, RULE_onDefault = 186, 
221 		RULE_fileStreamOn = 187, RULE_columnConstraints = 188, RULE_computedColumnDefinition = 189, 
222 		RULE_columnSetDefinition = 190, RULE_tableConstraint = 191, RULE_tablePrimaryConstraint = 192, 
223 		RULE_primaryKeyUnique = 193, RULE_diskTablePrimaryConstraintOption = 194, 
224 		RULE_memoryTablePrimaryConstraintOption = 195, RULE_hashWithBucket = 196, 
225 		RULE_tableForeignKeyConstraint = 197, RULE_tableIndex = 198, RULE_indexNameOption = 199, 
226 		RULE_indexOptions = 200, RULE_periodClause = 201, RULE_partitionScheme = 202, 
227 		RULE_fileGroup = 203, RULE_tableOptions = 204, RULE_tableOption = 205, 
228 		RULE_dataDelectionOption = 206, RULE_tableStretchOptions = 207, RULE_tableStretchOption = 208, 
229 		RULE_migrationState_ = 209, RULE_tableOperationOption = 210, RULE_distributionOption = 211, 
230 		RULE_dataWareHouseTableOption = 212, RULE_dataWareHousePartitionOption = 213, 
231 		RULE_createIndexSpecification = 214, RULE_alterDefinitionClause = 215, 
232 		RULE_addColumnSpecification = 216, RULE_modifyColumnSpecification = 217, 
233 		RULE_alterColumnOperation = 218, RULE_alterColumnAddOptions = 219, RULE_alterColumnAddOption = 220, 
234 		RULE_constraintForColumn = 221, RULE_generatedColumnNamesClause = 222, 
235 		RULE_generatedColumnNameClause = 223, RULE_generatedColumnName = 224, 
236 		RULE_alterDrop = 225, RULE_alterTableDropConstraint = 226, RULE_dropConstraintName = 227, 
237 		RULE_dropConstraintWithClause = 228, RULE_dropConstraintOption = 229, 
238 		RULE_onOffOption = 230, RULE_dropColumnSpecification = 231, RULE_dropIndexSpecification = 232, 
239 		RULE_alterCheckConstraint = 233, RULE_alterTableTrigger = 234, RULE_alterSwitch = 235, 
240 		RULE_alterSet = 236, RULE_setFileStreamClause = 237, RULE_setSystemVersionClause = 238, 
241 		RULE_alterSetOnClause = 239, RULE_dataConsistencyCheckClause = 240, RULE_historyRetentionPeriodClause = 241, 
242 		RULE_historyRetentionPeriod = 242, RULE_alterTableTableIndex = 243, RULE_indexWithName = 244, 
243 		RULE_indexNonClusterClause = 245, RULE_alterTableIndexOnClause = 246, 
244 		RULE_indexClusterClause = 247, RULE_alterTableOption = 248, RULE_onHistoryTableClause = 249, 
245 		RULE_createDatabaseClause = 250, RULE_fileDefinitionClause = 251, RULE_databaseOption = 252, 
246 		RULE_fileStreamOption = 253, RULE_fileSpec = 254, RULE_databaseFileSpecOption = 255, 
247 		RULE_databaseFileGroup = 256, RULE_databaseFileGroupContains = 257, RULE_databaseLogOns = 258, 
248 		RULE_declareVariable = 259, RULE_variable = 260, RULE_tableVariable = 261, 
249 		RULE_variTableTypeDefinition = 262, RULE_tableVariableClause = 263, RULE_variableTableColumnDefinition = 264, 
250 		RULE_variableTableColumnConstraint = 265, RULE_variableTableConstraint = 266, 
251 		RULE_setVariable = 267, RULE_setVariableClause = 268, RULE_cursorVariable = 269, 
252 		RULE_cursorClause = 270, RULE_compoundOperation = 271, RULE_funcParameters = 272, 
253 		RULE_funcReturns = 273, RULE_funcMutiReturn = 274, RULE_funcInlineReturn = 275, 
254 		RULE_funcScalarReturn = 276, RULE_tableTypeDefinition = 277, RULE_compoundStatement = 278, 
255 		RULE_functionOption = 279, RULE_validStatement = 280, RULE_procParameters = 281, 
256 		RULE_procParameter = 282, RULE_createOrAlterProcClause = 283, RULE_withCreateProcOption = 284, 
257 		RULE_procOption = 285, RULE_procAsClause = 286, RULE_procSetOption = 287, 
258 		RULE_createOrAlterViewClause = 288, RULE_viewAttribute = 289, RULE_withCommonTableExpr = 290, 
259 		RULE_commonTableExpr = 291, RULE_createTriggerClause = 292, RULE_dmlTriggerOption = 293, 
260 		RULE_methodSpecifier = 294, RULE_triggerTarget = 295, RULE_createOrAlterSequenceClause = 296, 
261 		RULE_createIndexClause = 297, RULE_filterPredicate = 298, RULE_conjunct = 299, 
262 		RULE_alterIndexClause = 300, RULE_relationalIndexOption = 301, RULE_partitionNumberRange = 302, 
263 		RULE_reorganizeOption = 303, RULE_setIndexOption = 304, RULE_resumableIndexOptions = 305, 
264 		RULE_alterDatabaseClause = 306, RULE_addSecondaryOption = 307, RULE_editionOptions = 308, 
265 		RULE_serviceObjective = 309, RULE_alterDatabaseOptionSpec = 310, RULE_fileAndFilegroupOptions = 311, 
266 		RULE_addOrModifyFilegroups = 312, RULE_filegroupUpdatabilityOption = 313, 
267 		RULE_addOrModifyFiles = 314, RULE_acceleratedDatabaseRecovery = 315, RULE_autoOption = 316, 
268 		RULE_automaticTuningOption = 317, RULE_changeTrackingOption = 318, RULE_changeTrackingOptionList = 319, 
269 		RULE_cursorOption = 320, RULE_externalAccessOption = 321, RULE_queryStoreOptions = 322, 
270 		RULE_queryStoreOptionList = 323, RULE_queryCapturePolicyOptionList = 324, 
271 		RULE_recoveryOption = 325, RULE_sqlOption = 326, RULE_snapshotOption = 327, 
272 		RULE_serviceBrokerOption = 328, RULE_targetRecoveryTimeOption = 329, RULE_termination = 330, 
273 		RULE_createServiceClause = 331, RULE_alterServiceClause = 332, RULE_alterServiceOptArg = 333, 
274 		RULE_schemaNameClause = 334, RULE_schemaElement = 335, RULE_createTableAsSelectClause = 336, 
275 		RULE_createTableAsSelect = 337, RULE_createRemoteTableAsSelect = 338, 
276 		RULE_withDistributionOption = 339, RULE_optionQueryHintClause = 340, RULE_insert = 341, 
277 		RULE_insertDefaultValue = 342, RULE_insertValuesClause = 343, RULE_insertSelectClause = 344, 
278 		RULE_insertExecClause = 345, RULE_withTableHint = 346, RULE_exec = 347, 
279 		RULE_update = 348, RULE_assignment = 349, RULE_setAssignmentsClause = 350, 
280 		RULE_assignmentValues = 351, RULE_assignmentValue = 352, RULE_delete = 353, 
281 		RULE_singleTableClause = 354, RULE_multipleTablesClause = 355, RULE_multipleTableNames = 356, 
282 		RULE_select = 357, RULE_aggregationClause = 358, RULE_selectClause = 359, 
283 		RULE_duplicateSpecification = 360, RULE_projections = 361, RULE_projection = 362, 
284 		RULE_top = 363, RULE_topNum = 364, RULE_unqualifiedShorthand = 365, RULE_qualifiedShorthand = 366, 
285 		RULE_fromClause = 367, RULE_tableReferences = 368, RULE_tableReference = 369, 
286 		RULE_tableFactor = 370, RULE_joinedTable = 371, RULE_joinSpecification = 372, 
287 		RULE_whereClause = 373, RULE_groupByClause = 374, RULE_havingClause = 375, 
288 		RULE_subquery = 376, RULE_withClause = 377, RULE_cteClauseSet = 378, RULE_cteClause = 379, 
289 		RULE_outputClause = 380, RULE_outputWithColumns = 381, RULE_outputWithColumn = 382, 
290 		RULE_outputWithAaterisk = 383, RULE_outputTableName = 384, RULE_queryHint = 385, 
291 		RULE_useHitName = 386, RULE_forClause = 387, RULE_forXmlClause = 388, 
292 		RULE_commonDirectivesForXml = 389, RULE_forJsonClause = 390, RULE_selectWithClause = 391, 
293 		RULE_xmlNamespacesClause = 392, RULE_xmlNamespaceDeclarationItem = 393, 
294 		RULE_xmlNamespaceUri = 394, RULE_xmlNamespacePrefix = 395, RULE_xmlDefaultNamespaceDeclarationItem = 396, 
295 		RULE_grant = 397, RULE_grantClassPrivilegesClause = 398, RULE_grantClassTypePrivilegesClause = 399, 
296 		RULE_classPrivileges = 400, RULE_onClassClause = 401, RULE_classTypePrivileges = 402, 
297 		RULE_onClassTypeClause = 403, RULE_securable = 404, RULE_principal = 405, 
298 		RULE_revoke = 406, RULE_revokeClassPrivilegesClause = 407, RULE_revokeClassTypePrivilegesClause = 408, 
299 		RULE_deny = 409, RULE_denyClassPrivilegesClause = 410, RULE_denyClassTypePrivilegesClause = 411, 
300 		RULE_optionForClause = 412, RULE_privilegeType = 413, RULE_objectPermission = 414, 
301 		RULE_serverPermission = 415, RULE_serverPrincipalPermission = 416, RULE_databasePermission = 417, 
302 		RULE_databasePrincipalPermission = 418, RULE_databaseUserPermission = 419, 
303 		RULE_databaseRolePermission = 420, RULE_applicationRolePermission = 421, 
304 		RULE_databaseScopedCredentialPermission = 422, RULE_schemaPermission = 423, 
305 		RULE_searchPropertyListPermission = 424, RULE_serviceBrokerPermission = 425, 
306 		RULE_serviceBrokerContractsPermission = 426, RULE_serviceBrokerMessageTypesPermission = 427, 
307 		RULE_serviceBrokerRemoteServiceBindingsPermission = 428, RULE_serviceBrokerRoutesPermission = 429, 
308 		RULE_serviceBrokerServicesPermission = 430, RULE_endpointPermission = 431, 
309 		RULE_certificatePermission = 432, RULE_symmetricKeyPermission = 433, RULE_asymmetricKeyPermission = 434, 
310 		RULE_assemblyPermission = 435, RULE_availabilityGroupPermission = 436, 
311 		RULE_fullTextPermission = 437, RULE_fullTextCatalogPermission = 438, RULE_fullTextStoplistPermission = 439, 
312 		RULE_typePermission = 440, RULE_xmlSchemaCollectionPermission = 441, RULE_systemObjectPermission = 442, 
313 		RULE_class_ = 443, RULE_classItem = 444, RULE_classType = 445, RULE_roleClause = 446, 
314 		RULE_setUser = 447, RULE_createUser = 448, RULE_createUserLoginClause = 449, 
315 		RULE_createUserWindowsPrincipalClause = 450, RULE_createUserLoginWindowsPrincipalClause = 451, 
316 		RULE_createUserWithoutLoginClause = 452, RULE_optionsList = 453, RULE_limitedOptionsList = 454, 
317 		RULE_createUserFromExternalProviderClause = 455, RULE_createUserWithDefaultSchema = 456, 
318 		RULE_createUserWithAzureActiveDirectoryPrincipalClause = 457, RULE_windowsPrincipal = 458, 
319 		RULE_azureActiveDirectoryPrincipal = 459, RULE_userName = 460, RULE_ignoredNameIdentifier = 461, 
320 		RULE_dropUser = 462, RULE_alterUser = 463, RULE_setItem = 464, RULE_createRole = 465, 
321 		RULE_dropRole = 466, RULE_alterRole = 467, RULE_createLogin = 468, RULE_createLoginForSQLServerClause = 469, 
322 		RULE_createLoginForSQLServerOptionList = 470, RULE_createLoginForSQLServerOptionListClause = 471, 
323 		RULE_hashedPassword = 472, RULE_sid = 473, RULE_sources = 474, RULE_windowsOptions = 475, 
324 		RULE_createLoginForAzureSQLDatabaseClause = 476, RULE_createLoginForAzureSQLDatabaseOptionList = 477, 
325 		RULE_createLoginForAzureManagedInstanceClause = 478, RULE_azureManagedInstanceOptionList = 479, 
326 		RULE_createLoginForAzureSynapseAnalyticsClause = 480, RULE_createLoginForAzureSynapseAnalyticsOptionList = 481, 
327 		RULE_createLoginForAnalyticsPlatformSystemClause = 482, RULE_createLoginForAnalyticsPlatformSystemOptionList = 483, 
328 		RULE_createLoginForAnalyticsPlatformSystemOptionListClause = 484, RULE_dropLogin = 485, 
329 		RULE_alterLogin = 486, RULE_statusOptionClause = 487, RULE_setOptionClause = 488, 
330 		RULE_passwordOptionClause = 489, RULE_cryptographicCredentialsOptionClause = 490, 
331 		RULE_revert = 491;
332 	private static String[] makeRuleNames() {
333 		return new String[] {
334 			"execute", "setTransaction", "isolationLevel", "setImplicitTransactions", 
335 			"implicitTransactionsValue", "beginTransaction", "beginDistributedTransaction", 
336 			"commit", "commitWork", "rollback", "rollbackWork", "savepoint", "parameterMarker", 
337 			"literals", "stringLiterals", "numberLiterals", "dateTimeLiterals", "hexadecimalLiterals", 
338 			"bitValueLiterals", "booleanLiterals", "nullValueLiterals", "identifier", 
339 			"regularIdentifier", "delimitedIdentifier", "unreservedWord", "databaseName", 
340 			"schemaName", "functionName", "procedureName", "viewName", "triggerName", 
341 			"sequenceName", "tableName", "queueName", "contractName", "serviceName", 
342 			"columnName", "scriptVariableName", "owner", "name", "columnNames", "columnNamesWithSort", 
343 			"tableNames", "indexName", "constraintName", "collationName", "alias", 
344 			"dataTypeLength", "primaryKey", "expr", "andOperator", "orOperator", 
345 			"distinctFrom", "notOperator", "booleanPrimary", "comparisonOperator", 
346 			"predicate", "bitExpr", "simpleExpr", "functionCall", "aggregationFunction", 
347 			"aggregationFunctionName", "distinct", "specialFunction", "castFunction", 
348 			"convertFunction", "charFunction", "openJsonFunction", "openJsonWithclause", 
349 			"jsonColumnDefinition", "openRowSetFunction", "regularFunction", "regularFunctionName", 
350 			"caseExpression", "caseWhen", "caseElse", "privateExprOfDb", "orderByClause", 
351 			"orderByItem", "dataType", "dataTypeName", "atTimeZoneExpr", "castExpr", 
352 			"convertExpr", "windowedFunction", "overClause", "partitionByClause", 
353 			"rowRangeClause", "windowFrameExtent", "windowFrameBetween", "windowFrameBound", 
354 			"windowFramePreceding", "windowFrameFollowing", "columnNameWithSort", 
355 			"indexOption", "compressionOption", "eqTime", "eqOnOffOption", "eqKey", 
356 			"eqOnOff", "onPartitionClause", "partitionExpressions", "partitionExpression", 
357 			"numberRange", "lowPriorityLockWait", "onLowPriorLockWait", "ignoredIdentifier", 
358 			"ignoredIdentifiers", "matchNone", "variableName", "executeAsClause", 
359 			"transactionName", "transactionVariableName", "savepointName", "savepointVariableName", 
360 			"entityType", "ifExists", "tableHintLimited", "call", "explain", "explainableStatement", 
361 			"createTable", "createTableClause", "createIndex", "createDatabase", 
362 			"createFunction", "createProcedure", "createView", "createTrigger", "createSequence", 
363 			"createService", "createSchema", "alterTable", "alterIndex", "alterDatabase", 
364 			"alterProcedure", "alterFunction", "alterView", "alterTrigger", "alterSequence", 
365 			"alterService", "alterSchema", "dropTable", "dropIndex", "dropDatabase", 
366 			"dropFunction", "dropProcedure", "dropView", "dropTrigger", "dropSequence", 
367 			"dropService", "dropSchema", "truncateTable", "updateStatistics", "statisticsWithClause", 
368 			"sampleOption", "statisticsOptions", "statisticsOption", "fileTableClause", 
369 			"createDefinitionClause", "createTableDefinitions", "createTableDefinition", 
370 			"columnDefinition", "columnDefinitionOption", "encryptedOptions", "columnConstraint", 
371 			"computedColumnConstraint", "computedColumnForeignKeyConstraint", "computedColumnForeignKeyOnAction", 
372 			"primaryKeyConstraint", "diskTablePrimaryKeyConstraintOption", "clusterOption", 
373 			"primaryKeyWithClause", "primaryKeyOnClause", "onSchemaColumn", "onFileGroup", 
374 			"onString", "memoryTablePrimaryKeyConstraintOption", "withBucket", "columnForeignKeyConstraint", 
375 			"foreignKeyOnAction", "foreignKeyOn", "checkConstraint", "columnIndex", 
376 			"withIndexOption", "indexOnClause", "onDefault", "fileStreamOn", "columnConstraints", 
377 			"computedColumnDefinition", "columnSetDefinition", "tableConstraint", 
378 			"tablePrimaryConstraint", "primaryKeyUnique", "diskTablePrimaryConstraintOption", 
379 			"memoryTablePrimaryConstraintOption", "hashWithBucket", "tableForeignKeyConstraint", 
380 			"tableIndex", "indexNameOption", "indexOptions", "periodClause", "partitionScheme", 
381 			"fileGroup", "tableOptions", "tableOption", "dataDelectionOption", "tableStretchOptions", 
382 			"tableStretchOption", "migrationState_", "tableOperationOption", "distributionOption", 
383 			"dataWareHouseTableOption", "dataWareHousePartitionOption", "createIndexSpecification", 
384 			"alterDefinitionClause", "addColumnSpecification", "modifyColumnSpecification", 
385 			"alterColumnOperation", "alterColumnAddOptions", "alterColumnAddOption", 
386 			"constraintForColumn", "generatedColumnNamesClause", "generatedColumnNameClause", 
387 			"generatedColumnName", "alterDrop", "alterTableDropConstraint", "dropConstraintName", 
388 			"dropConstraintWithClause", "dropConstraintOption", "onOffOption", "dropColumnSpecification", 
389 			"dropIndexSpecification", "alterCheckConstraint", "alterTableTrigger", 
390 			"alterSwitch", "alterSet", "setFileStreamClause", "setSystemVersionClause", 
391 			"alterSetOnClause", "dataConsistencyCheckClause", "historyRetentionPeriodClause", 
392 			"historyRetentionPeriod", "alterTableTableIndex", "indexWithName", "indexNonClusterClause", 
393 			"alterTableIndexOnClause", "indexClusterClause", "alterTableOption", 
394 			"onHistoryTableClause", "createDatabaseClause", "fileDefinitionClause", 
395 			"databaseOption", "fileStreamOption", "fileSpec", "databaseFileSpecOption", 
396 			"databaseFileGroup", "databaseFileGroupContains", "databaseLogOns", "declareVariable", 
397 			"variable", "tableVariable", "variTableTypeDefinition", "tableVariableClause", 
398 			"variableTableColumnDefinition", "variableTableColumnConstraint", "variableTableConstraint", 
399 			"setVariable", "setVariableClause", "cursorVariable", "cursorClause", 
400 			"compoundOperation", "funcParameters", "funcReturns", "funcMutiReturn", 
401 			"funcInlineReturn", "funcScalarReturn", "tableTypeDefinition", "compoundStatement", 
402 			"functionOption", "validStatement", "procParameters", "procParameter", 
403 			"createOrAlterProcClause", "withCreateProcOption", "procOption", "procAsClause", 
404 			"procSetOption", "createOrAlterViewClause", "viewAttribute", "withCommonTableExpr", 
405 			"commonTableExpr", "createTriggerClause", "dmlTriggerOption", "methodSpecifier", 
406 			"triggerTarget", "createOrAlterSequenceClause", "createIndexClause", 
407 			"filterPredicate", "conjunct", "alterIndexClause", "relationalIndexOption", 
408 			"partitionNumberRange", "reorganizeOption", "setIndexOption", "resumableIndexOptions", 
409 			"alterDatabaseClause", "addSecondaryOption", "editionOptions", "serviceObjective", 
410 			"alterDatabaseOptionSpec", "fileAndFilegroupOptions", "addOrModifyFilegroups", 
411 			"filegroupUpdatabilityOption", "addOrModifyFiles", "acceleratedDatabaseRecovery", 
412 			"autoOption", "automaticTuningOption", "changeTrackingOption", "changeTrackingOptionList", 
413 			"cursorOption", "externalAccessOption", "queryStoreOptions", "queryStoreOptionList", 
414 			"queryCapturePolicyOptionList", "recoveryOption", "sqlOption", "snapshotOption", 
415 			"serviceBrokerOption", "targetRecoveryTimeOption", "termination", "createServiceClause", 
416 			"alterServiceClause", "alterServiceOptArg", "schemaNameClause", "schemaElement", 
417 			"createTableAsSelectClause", "createTableAsSelect", "createRemoteTableAsSelect", 
418 			"withDistributionOption", "optionQueryHintClause", "insert", "insertDefaultValue", 
419 			"insertValuesClause", "insertSelectClause", "insertExecClause", "withTableHint", 
420 			"exec", "update", "assignment", "setAssignmentsClause", "assignmentValues", 
421 			"assignmentValue", "delete", "singleTableClause", "multipleTablesClause", 
422 			"multipleTableNames", "select", "aggregationClause", "selectClause", 
423 			"duplicateSpecification", "projections", "projection", "top", "topNum", 
424 			"unqualifiedShorthand", "qualifiedShorthand", "fromClause", "tableReferences", 
425 			"tableReference", "tableFactor", "joinedTable", "joinSpecification", 
426 			"whereClause", "groupByClause", "havingClause", "subquery", "withClause", 
427 			"cteClauseSet", "cteClause", "outputClause", "outputWithColumns", "outputWithColumn", 
428 			"outputWithAaterisk", "outputTableName", "queryHint", "useHitName", "forClause", 
429 			"forXmlClause", "commonDirectivesForXml", "forJsonClause", "selectWithClause", 
430 			"xmlNamespacesClause", "xmlNamespaceDeclarationItem", "xmlNamespaceUri", 
431 			"xmlNamespacePrefix", "xmlDefaultNamespaceDeclarationItem", "grant", 
432 			"grantClassPrivilegesClause", "grantClassTypePrivilegesClause", "classPrivileges", 
433 			"onClassClause", "classTypePrivileges", "onClassTypeClause", "securable", 
434 			"principal", "revoke", "revokeClassPrivilegesClause", "revokeClassTypePrivilegesClause", 
435 			"deny", "denyClassPrivilegesClause", "denyClassTypePrivilegesClause", 
436 			"optionForClause", "privilegeType", "objectPermission", "serverPermission", 
437 			"serverPrincipalPermission", "databasePermission", "databasePrincipalPermission", 
438 			"databaseUserPermission", "databaseRolePermission", "applicationRolePermission", 
439 			"databaseScopedCredentialPermission", "schemaPermission", "searchPropertyListPermission", 
440 			"serviceBrokerPermission", "serviceBrokerContractsPermission", "serviceBrokerMessageTypesPermission", 
441 			"serviceBrokerRemoteServiceBindingsPermission", "serviceBrokerRoutesPermission", 
442 			"serviceBrokerServicesPermission", "endpointPermission", "certificatePermission", 
443 			"symmetricKeyPermission", "asymmetricKeyPermission", "assemblyPermission", 
444 			"availabilityGroupPermission", "fullTextPermission", "fullTextCatalogPermission", 
445 			"fullTextStoplistPermission", "typePermission", "xmlSchemaCollectionPermission", 
446 			"systemObjectPermission", "class_", "classItem", "classType", "roleClause", 
447 			"setUser", "createUser", "createUserLoginClause", "createUserWindowsPrincipalClause", 
448 			"createUserLoginWindowsPrincipalClause", "createUserWithoutLoginClause", 
449 			"optionsList", "limitedOptionsList", "createUserFromExternalProviderClause", 
450 			"createUserWithDefaultSchema", "createUserWithAzureActiveDirectoryPrincipalClause", 
451 			"windowsPrincipal", "azureActiveDirectoryPrincipal", "userName", "ignoredNameIdentifier", 
452 			"dropUser", "alterUser", "setItem", "createRole", "dropRole", "alterRole", 
453 			"createLogin", "createLoginForSQLServerClause", "createLoginForSQLServerOptionList", 
454 			"createLoginForSQLServerOptionListClause", "hashedPassword", "sid", "sources", 
455 			"windowsOptions", "createLoginForAzureSQLDatabaseClause", "createLoginForAzureSQLDatabaseOptionList", 
456 			"createLoginForAzureManagedInstanceClause", "azureManagedInstanceOptionList", 
457 			"createLoginForAzureSynapseAnalyticsClause", "createLoginForAzureSynapseAnalyticsOptionList", 
458 			"createLoginForAnalyticsPlatformSystemClause", "createLoginForAnalyticsPlatformSystemOptionList", 
459 			"createLoginForAnalyticsPlatformSystemOptionListClause", "dropLogin", 
460 			"alterLogin", "statusOptionClause", "setOptionClause", "passwordOptionClause", 
461 			"cryptographicCredentialsOptionClause", "revert"
462 		};
463 	}
464 	public static final String[] ruleNames = makeRuleNames();
465 
466 	private static String[] makeLiteralNames() {
467 		return new String[] {
468 			null, "'Default does not match anything'", null, null, "'&&'", "'||'", 
469 			"'!'", "'~'", "'|'", "'&'", "'<<'", "'>>'", "'^'", "'%'", "':'", "'+'", 
470 			"'-'", "'*'", "'/'", "'\\'", "'.'", "'.*'", "'<=>'", "'=='", "'='", null, 
471 			"'>'", "'>='", "'<'", "'<='", "'#'", "'('", "')'", "'{'", "'}'", "'['", 
472 			"']'", "','", "'\"'", "'''", "'`'", "'?'", "'@'", "';'", "'$'", null, 
473 			null, null, null, null, null, null, null, null, null, null, null, null, 
474 			null, null, null, null, null, null, null, null, null, null, null, null, 
475 			null, null, null, null, null, null, null, null, null, null, null, null, 
476 			null, null, null, null, null, null, null, null, null, null, null, null, 
477 			null, null, null, null, null, null, null, null, null, null, null, null, 
478 			null, null, null, null, null, null, null, null, null, null, null, null, 
479 			null, null, null, null, null, null, null, null, null, null, null, null, 
480 			null, null, null, null, null, null, null, null, null, null, null, null, 
481 			null, null, null, null, null, null, null, null, null, null, null, null, 
482 			null, null, null, null, null, null, null, null, null, null, null, null, 
483 			null, null, null, null, null, null, null, null, null, null, null, null, 
484 			null, null, null, null, null, null, null, null, null, null, null, null, 
485 			null, null, null, null, null, null, null, null, null, null, null, null, 
486 			null, null, null, null, null, null, null, null, null, null, null, null, 
487 			null, null, null, null, null, null, null, null, null, null, null, null, 
488 			null, null, null, null, null, null, null, "'DO NOT MATCH ANY THING, JUST FOR GENERATOR'"
489 		};
490 	}
491 	private static final String[] _LITERAL_NAMES = makeLiteralNames();
492 	private static String[] makeSymbolicNames() {
493 		return new String[] {
494 			null, null, "BLOCK_COMMENT", "INLINE_COMMENT", "AND_", "OR_", "NOT_", 
495 			"TILDE_", "VERTICAL_BAR_", "AMPERSAND_", "SIGNED_LEFT_SHIFT_", "SIGNED_RIGHT_SHIFT_", 
496 			"CARET_", "MOD_", "COLON_", "PLUS_", "MINUS_", "ASTERISK_", "SLASH_", 
497 			"BACKSLASH_", "DOT_", "DOT_ASTERISK_", "SAFE_EQ_", "DEQ_", "EQ_", "NEQ_", 
498 			"GT_", "GTE_", "LT_", "LTE_", "POUND_", "LP_", "RP_", "LBE_", "RBE_", 
499 			"LBT_", "RBT_", "COMMA_", "DQ_", "SQ_", "BQ_", "QUESTION_", "AT_", "SEMI_", 
500 			"DOLLAR_", "WS", "SELECT", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", 
501 			"DROP", "TRUNCATE", "SCHEMA", "GRANT", "REVOKE", "ADD", "SET", "TABLE", 
502 			"COLUMN", "COLUMNS", "INDEX", "CONSTRAINT", "PRIMARY", "UNIQUE", "FOREIGN", 
503 			"KEY", "POSITION", "PRECISION", "FUNCTION", "TRIGGER", "PROCEDURE", "PROC", 
504 			"VIEW", "INTO", "VALUES", "WITH", "UNION", "DISTINCT", "CASE", "WHEN", 
505 			"CAST", "TRIM", "SUBSTRING", "FROM", "NATURAL", "JOIN", "FULL", "INNER", 
506 			"OUTER", "LEFT", "RIGHT", "CROSS", "USING", "WHERE", "AS", "ON", "OFF", 
507 			"IF", "ELSE", "THEN", "FOR", "TO", "AND", "OR", "IS", "NOT", "NULL", 
508 			"TRUE", "FALSE", "EXISTS", "BETWEEN", "IN", "ALL", "ANY", "LIKE", "ORDER", 
509 			"GROUP", "BY", "ASC", "DESC", "HAVING", "LIMIT", "OFFSET", "BEGIN", "COMMIT", 
510 			"ROLLBACK", "SAVEPOINT", "BOOLEAN", "DOUBLE", "CHAR", "CHARACTER", "ARRAY", 
511 			"INTERVAL", "DATE", "TIME", "TIMESTAMP", "LOCALTIME", "LOCALTIMESTAMP", 
512 			"YEAR", "QUARTER", "MONTH", "WEEK", "DAY", "HOUR", "MINUTE", "SECOND", 
513 			"MICROSECOND", "MAX", "MIN", "SUM", "COUNT", "AVG", "DEFAULT", "CURRENT", 
514 			"ENABLE", "DISABLE", "CALL", "INSTANCE", "PRESERVE", "DO", "DEFINER", 
515 			"CURRENT_USER", "SQL", "CASCADED", "LOCAL", "CLOSE", "OPEN", "NEXT", 
516 			"NAME", "COLLATION", "NAMES", "INTEGER", "REAL", "DECIMAL", "TYPE", "BIT", 
517 			"SMALLINT", "INT", "TINYINT", "NUMERIC", "FLOAT", "BIGINT", "TEXT", "VARCHAR", 
518 			"PERCENT", "TIES", "EXCEPT", "INTERSECT", "USE", "MERGE", "LOOP", "EXPAND", 
519 			"VIEWS", "FAST", "FORCE", "KEEP", "PLAN", "OPTIMIZE", "SIMPLE", "FORCED", 
520 			"HINT", "READ_ONLY", "DATABASE", "DECLARE", "CURSOR", "OF", "RETURNS", 
521 			"DATEPART", "RETURN", "READONLY", "AT", "PASSWORD", "WITHOUT", "APPLY", 
522 			"KEEPIDENTITY", "KEEPDEFAULTS", "HOLDLOCK", "IGNORE_CONSTRAINTS", "IGNORE_TRIGGERS", 
523 			"NOLOCK", "NOWAIT", "PAGLOCK", "READCOMMITTED", "READCOMMITTEDLOCK", 
524 			"READPAST", "REPEATABLEREAD", "ROWLOCK", "TABLOCK", "TABLOCKX", "UPDLOCK", 
525 			"XLOCK", "FOR_GENERATOR", "BINARY", "ESCAPE", "HIDDEN_", "MOD", "PARTITION", 
526 			"PARTITIONS", "TOP", "ROW", "ROWS", "UNKNOWN", "XOR", "ALWAYS", "CASCADE", 
527 			"CHECK", "GENERATED", "NO", "OPTION", "PRIVILEGES", "REFERENCES", "USER", 
528 			"ROLE", "START", "TRANSACTION", "ACTION", "ALGORITHM", "AUTO", "BLOCKERS", 
529 			"CLUSTERED", "NONCLUSTERED", "COLLATE", "COLUMNSTORE", "CONTENT", "CONVERT", 
530 			"YEARS", "MONTHS", "WEEKS", "DAYS", "MINUTES", "DENY", "DETERMINISTIC", 
531 			"DISTRIBUTION", "DOCUMENT", "DURABILITY", "ENCRYPTED", "END", "FILESTREAM", 
532 			"FILETABLE", "FILLFACTOR", "FOLLOWING", "HASH", "HEAP", "IDENTITY", "INBOUND", 
533 			"OUTBOUND", "UNBOUNDED", "INFINITE", "LOGIN", "MASKED", "MAXDOP", "MOVE", 
534 			"NOCHECK", "NONE", "OBJECT", "ONLINE", "OVER", "PAGE", "PAUSED", "PERIOD", 
535 			"PERSISTED", "PRECEDING", "RANDOMIZED", "RANGE", "REBUILD", "REPLICATE", 
536 			"REPLICATION", "RESUMABLE", "ROWGUIDCOL", "SAVE", "SELF", "SPARSE", "SWITCH", 
537 			"TRAN", "TRANCOUNT", "ZONE", "EXECUTE", "EXEC", "SESSION", "CONNECT", 
538 			"CONNECTION", "CATALOG", "CONTROL", "CONCAT", "TAKE", "OWNERSHIP", "DEFINITION", 
539 			"APPLICATION", "ASSEMBLY", "SYMMETRIC", "ASYMMETRIC", "SERVER", "RECEIVE", 
540 			"CHANGE", "TRACE", "TRACKING", "RESOURCES", "SETTINGS", "STATE", "AVAILABILITY", 
541 			"CREDENTIAL", "ENDPOINT", "EVENT", "NOTIFICATION", "LINKED", "AUDIT", 
542 			"DDL", "XML", "IMPERSONATE", "SECURABLES", "AUTHENTICATE", "EXTERNAL", 
543 			"ACCESS", "ADMINISTER", "BULK", "OPERATIONS", "UNSAFE", "SHUTDOWN", "SCOPED", 
544 			"CONFIGURATION", "DATASPACE", "SERVICE", "CERTIFICATE", "CONTRACT", "ENCRYPTION", 
545 			"MASTER", "DATA", "SOURCE", "FILE", "FORMAT", "LIBRARY", "FULLTEXT", 
546 			"MASK", "UNMASK", "MESSAGE", "REMOTE", "BINDING", "ROUTE", "SECURITY", 
547 			"POLICY", "AGGREGATE", "QUEUE", "RULE", "SYNONYM", "COLLECTION", "SCRIPT", 
548 			"KILL", "BACKUP", "LOG", "SHOWPLAN", "SUBSCRIBE", "QUERY", "NOTIFICATIONS", 
549 			"CHECKPOINT", "SEQUENCE", "ABORT_AFTER_WAIT", "ALLOW_PAGE_LOCKS", "ALLOW_ROW_LOCKS", 
550 			"ALL_SPARSE_COLUMNS", "BUCKET_COUNT", "COLUMNSTORE_ARCHIVE", "COLUMN_ENCRYPTION_KEY", 
551 			"COLUMN_SET", "COMPRESSION_DELAY", "DATABASE_DEAULT", "DATA_COMPRESSION", 
552 			"DATA_CONSISTENCY_CHECK", "ENCRYPTION_TYPE", "SYSTEM_TIME", "SYSTEM_VERSIONING", 
553 			"TEXTIMAGE_ON", "WAIT_AT_LOW_PRIORITY", "STATISTICS_INCREMENTAL", "STATISTICS_NORECOMPUTE", 
554 			"ROUND_ROBIN", "SCHEMA_AND_DATA", "SCHEMA_ONLY", "SORT_IN_TEMPDB", "IGNORE_DUP_KEY", 
555 			"IMPLICIT_TRANSACTIONS", "MAX_DURATION", "MEMORY_OPTIMIZED", "MIGRATION_STATE", 
556 			"PAD_INDEX", "REMOTE_DATA_ARCHIVE", "FILESTREAM_ON", "FILETABLE_COLLATE_FILENAME", 
557 			"FILETABLE_DIRECTORY", "FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME", "FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME", 
558 			"FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME", "FILTER_PREDICATE", "HISTORY_RETENTION_PERIOD", 
559 			"HISTORY_TABLE", "LOCK_ESCALATION", "DROP_EXISTING", "ROW_NUMBER", "FETCH", 
560 			"FIRST", "ONLY", "MONEY", "SMALLMONEY", "DATETIMEOFFSET", "DATETIME", 
561 			"DATETIME2", "SMALLDATETIME", "NCHAR", "NVARCHAR", "NTEXT", "VARBINARY", 
562 			"IMAGE", "SQL_VARIANT", "UNIQUEIDENTIFIER", "HIERARCHYID", "GEOMETRY", 
563 			"GEOGRAPHY", "OUTPUT", "INSERTED", "DELETED", "ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS", 
564 			"ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES", "DISABLE_BATCH_MODE_ADAPTIVE_JOINS", 
565 			"DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK", "DISABLE_DEFERRED_COMPILATION_TV", 
566 			"DISABLE_INTERLEAVED_EXECUTION_TVF", "DISABLE_OPTIMIZED_NESTED_LOOP", 
567 			"DISABLE_OPTIMIZER_ROWGOAL", "DISABLE_PARAMETER_SNIFFING", "DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK", 
568 			"DISABLE_TSQL_SCALAR_UDF_INLINING", "DISALLOW_BATCH_MODE", "ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS", 
569 			"ENABLE_QUERY_OPTIMIZER_HOTFIXES", "FORCE_DEFAULT_CARDINALITY_ESTIMATION", 
570 			"FORCE_LEGACY_CARDINALITY_ESTIMATION", "QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n", 
571 			"QUERY_PLAN_PROFILE", "EXTERNALPUSHDOWN", "SCALEOUTEXECUTION", "IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX", 
572 			"KEEPFIXED", "MAX_GRANT_PERCENT", "MIN_GRANT_PERCENT", "MAXRECURSION", 
573 			"NO_PERFORMANCE_SPOOL", "PARAMETERIZATION", "QUERYTRACEON", "RECOMPILE", 
574 			"ROBUST", "OPTIMIZE_FOR_SEQUENTIAL_KEY", "DATA_DELETION", "FILTER_COLUMN", 
575 			"RETENTION_PERIOD", "CONTAINMENT", "PARTIAL", "FILENAME", "SIZE", "MAXSIZE", 
576 			"FILEGROWTH", "UNLIMITED", "KB", "MB", "GB", "TB", "CONTAINS", "MEMORY_OPTIMIZED_DATA", 
577 			"FILEGROUP", "NON_TRANSACTED_ACCESS", "DB_CHAINING", "TRUSTWORTHY", "FORWARD_ONLY", 
578 			"SCROLL", "STATIC", "KEYSET", "DYNAMIC", "FAST_FORWARD", "SCROLL_LOCKS", 
579 			"OPTIMISTIC", "TYPE_WARNING", "SCHEMABINDING", "CALLER", "INPUT", "CALLED", 
580 			"VARYING", "OUT", "OWNER", "ATOMIC", "LANGUAGE", "LEVEL", "ISOLATION", 
581 			"SNAPSHOT", "REPEATABLE", "READ", "SERIALIZABLE", "NATIVE_COMPILATION", 
582 			"VIEW_METADATA", "AFTER", "INSTEAD", "APPEND", "INCREMENT", "CYCLE", 
583 			"CACHE", "MINVALUE", "MAXVALUE", "RESTART", "LOB_COMPACTION", "COMPRESS_ALL_ROW_GROUPS", 
584 			"REORGANIZE", "RESUME", "PAUSE", "ABORT", "INCLUDE", "DISTRIBUTED", "MARK", 
585 			"WORK", "REMOVE", "AUTOGROW_SINGLE_FILE", "AUTOGROW_ALL_FILES", "READWRITE", 
586 			"READ_WRITE", "MODIFY", "ACCELERATED_DATABASE_RECOVERY", "PERSISTENT_VERSION_STORE_FILEGROUP", 
587 			"IMMEDIATE", "NO_WAIT", "TARGET_RECOVERY_TIME", "SECONDS", "HONOR_BROKER_PRIORITY", 
588 			"ERROR_BROKER_CONVERSATIONS", "NEW_BROKER", "DISABLE_BROKER", "ENABLE_BROKER", 
589 			"MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT", "READ_COMMITTED_SNAPSHOT", "ALLOW_SNAPSHOT_ISOLATION", 
590 			"RECURSIVE_TRIGGERS", "QUOTED_IDENTIFIER", "NUMERIC_ROUNDABORT", "CONCAT_NULL_YIELDS_NULL", 
591 			"COMPATIBILITY_LEVEL", "ARITHABORT", "ANSI_WARNINGS", "ANSI_PADDING", 
592 			"ANSI_NULLS", "ANSI_NULL_DEFAULT", "PAGE_VERIFY", "CHECKSUM", "TORN_PAGE_DETECTION", 
593 			"BULK_LOGGED", "RECOVERY", "TOTAL_EXECUTION_CPU_TIME_MS", "TOTAL_COMPILE_CPU_TIME_MS", 
594 			"STALE_CAPTURE_POLICY_THRESHOLD", "EXECUTION_COUNT", "QUERY_CAPTURE_POLICY", 
595 			"WAIT_STATS_CAPTURE_MODE", "MAX_PLANS_PER_QUERY", "QUERY_CAPTURE_MODE", 
596 			"SIZE_BASED_CLEANUP_MODE", "INTERVAL_LENGTH_MINUTES", "MAX_STORAGE_SIZE_MB", 
597 			"DATA_FLUSH_INTERVAL_SECONDS", "CLEANUP_POLICY", "CUSTOM", "STALE_QUERY_THRESHOLD_DAYS", 
598 			"OPERATION_MODE", "QUERY_STORE", "CURSOR_DEFAULT", "GLOBAL", "CURSOR_CLOSE_ON_COMMIT", 
599 			"HOURS", "CHANGE_RETENTION", "AUTO_CLEANUP", "CHANGE_TRACKING", "AUTOMATIC_TUNING", 
600 			"FORCE_LAST_GOOD_PLAN", "AUTO_UPDATE_STATISTICS_ASYNC", "AUTO_UPDATE_STATISTICS", 
601 			"AUTO_SHRINK", "AUTO_CREATE_STATISTICS", "INCREMENTAL", "AUTO_CLOSE", 
602 			"DATA_RETENTION", "TEMPORAL_HISTORY_RETENTION", "EDITION", "MIXED_PAGE_ALLOCATION", 
603 			"DISABLED", "ALLOWED", "HADR", "MULTI_USER", "RESTRICTED_USER", "SINGLE_USER", 
604 			"OFFLINE", "EMERGENCY", "SUSPEND", "DATE_CORRELATION_OPTIMIZATION", "ELASTIC_POOL", 
605 			"SERVICE_OBJECTIVE", "DATABASE_NAME", "ALLOW_CONNECTIONS", "GEO", "NAMED", 
606 			"DATEFIRST", "BACKUP_STORAGE_REDUNDANCY", "FORCE_FAILOVER_ALLOW_DATA_LOSS", 
607 			"SECONDARY", "FAILOVER", "DEFAULT_FULLTEXT_LANGUAGE", "DEFAULT_LANGUAGE", 
608 			"INLINE", "NESTED_TRIGGERS", "TRANSFORM_NOISE_WORDS", "TWO_DIGIT_YEAR_CUTOFF", 
609 			"PERSISTENT_LOG_BUFFER", "DIRECTORY_NAME", "DATEFORMAT", "DELAYED_DURABILITY", 
610 			"AUTHORIZATION", "TRANSFER", "EXPLAIN", "WITH_RECOMMENDATIONS", "BATCH_SIZE", 
611 			"SETUSER", "NORESET", "DEFAULT_SCHEMA", "ALLOW_ENCRYPTED_VALUE_MODIFICATIONS", 
612 			"OLD_PASSWORD", "PROVIDER", "SID", "UNCOMMITTED", "COMMITTED", "STOPLIST", 
613 			"SEARCH", "PROPERTY", "LIST", "SEND", "MEMBER", "HASHED", "MUST_CHANGE", 
614 			"DEFAULT_DATABASE", "CHECK_EXPIRATION", "CHECK_POLICY", "WINDOWS", "UNLOCK", 
615 			"REVERT", "COOKIE", "BROWSE", "RAW", "XMLDATA", "XMLSCHEMA", "ELEMENTS", 
616 			"XSINIL", "ABSENT", "EXPLICIT", "PATH", "BASE64", "ROOT", "JSON", "INCLUDE_NULL_VALUES", 
617 			"WITHOUT_ARRAY_WRAPPER", "XMLNAMESPACES", "STATISTICS", "FULLSCAN", "SAMPLE", 
618 			"RESAMPLE", "NORECOMPUTE", "AUTO_DROP", "PERSIST_SAMPLE_PERCENT", "OPENJSON", 
619 			"OPENROWSET", "IDENTIFIER_", "DELIMITED_IDENTIFIER_", "STRING_", "NUMBER_", 
620 			"INT_NUM_", "FLOAT_NUM_", "DECIMAL_NUM_", "HEX_DIGIT_", "BIT_NUM_", "NCHAR_TEXT"
621 		};
622 	}
623 	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
624 	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
625 
626 	/**
627 	 * @deprecated Use {@link #VOCABULARY} instead.
628 	 */
629 	@Deprecated
630 	public static final String[] tokenNames;
631 	static {
632 		tokenNames = new String[_SYMBOLIC_NAMES.length];
633 		for (int i = 0; i < tokenNames.length; i++) {
634 			tokenNames[i] = VOCABULARY.getLiteralName(i);
635 			if (tokenNames[i] == null) {
636 				tokenNames[i] = VOCABULARY.getSymbolicName(i);
637 			}
638 
639 			if (tokenNames[i] == null) {
640 				tokenNames[i] = "<INVALID>";
641 			}
642 		}
643 	}
644 
645 	@Override
646 	@Deprecated
647 	public String[] getTokenNames() {
648 		return tokenNames;
649 	}
650 
651 	@Override
652 
653 	public Vocabulary getVocabulary() {
654 		return VOCABULARY;
655 	}
656 
657 	@Override
658 	public String getGrammarFileName() { return "SQLServerStatement.g4"; }
659 
660 	@Override
661 	public String[] getRuleNames() { return ruleNames; }
662 
663 	@Override
664 	public String getSerializedATN() { return _serializedATN; }
665 
666 	@Override
667 	public ATN getATN() { return _ATN; }
668 
669 	public SQLServerStatementParser(TokenStream input) {
670 		super(input);
671 		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
672 	}
673 
674 	public static class ExecuteContext extends ParserRuleContext {
675 		public SelectContext select() {
676 			return getRuleContext(SelectContext.class,0);
677 		}
678 		public InsertContext insert() {
679 			return getRuleContext(InsertContext.class,0);
680 		}
681 		public UpdateContext update() {
682 			return getRuleContext(UpdateContext.class,0);
683 		}
684 		public DeleteContext delete() {
685 			return getRuleContext(DeleteContext.class,0);
686 		}
687 		public CreateIndexContext createIndex() {
688 			return getRuleContext(CreateIndexContext.class,0);
689 		}
690 		public AlterIndexContext alterIndex() {
691 			return getRuleContext(AlterIndexContext.class,0);
692 		}
693 		public DropIndexContext dropIndex() {
694 			return getRuleContext(DropIndexContext.class,0);
695 		}
696 		public CreateTableContext createTable() {
697 			return getRuleContext(CreateTableContext.class,0);
698 		}
699 		public CreateDatabaseContext createDatabase() {
700 			return getRuleContext(CreateDatabaseContext.class,0);
701 		}
702 		public CreateProcedureContext createProcedure() {
703 			return getRuleContext(CreateProcedureContext.class,0);
704 		}
705 		public CreateViewContext createView() {
706 			return getRuleContext(CreateViewContext.class,0);
707 		}
708 		public CreateTriggerContext createTrigger() {
709 			return getRuleContext(CreateTriggerContext.class,0);
710 		}
711 		public CreateSequenceContext createSequence() {
712 			return getRuleContext(CreateSequenceContext.class,0);
713 		}
714 		public CreateServiceContext createService() {
715 			return getRuleContext(CreateServiceContext.class,0);
716 		}
717 		public CreateSchemaContext createSchema() {
718 			return getRuleContext(CreateSchemaContext.class,0);
719 		}
720 		public AlterTableContext alterTable() {
721 			return getRuleContext(AlterTableContext.class,0);
722 		}
723 		public AlterTriggerContext alterTrigger() {
724 			return getRuleContext(AlterTriggerContext.class,0);
725 		}
726 		public AlterSequenceContext alterSequence() {
727 			return getRuleContext(AlterSequenceContext.class,0);
728 		}
729 		public AlterDatabaseContext alterDatabase() {
730 			return getRuleContext(AlterDatabaseContext.class,0);
731 		}
732 		public AlterServiceContext alterService() {
733 			return getRuleContext(AlterServiceContext.class,0);
734 		}
735 		public AlterSchemaContext alterSchema() {
736 			return getRuleContext(AlterSchemaContext.class,0);
737 		}
738 		public AlterViewContext alterView() {
739 			return getRuleContext(AlterViewContext.class,0);
740 		}
741 		public DropTableContext dropTable() {
742 			return getRuleContext(DropTableContext.class,0);
743 		}
744 		public DropDatabaseContext dropDatabase() {
745 			return getRuleContext(DropDatabaseContext.class,0);
746 		}
747 		public DropFunctionContext dropFunction() {
748 			return getRuleContext(DropFunctionContext.class,0);
749 		}
750 		public DropProcedureContext dropProcedure() {
751 			return getRuleContext(DropProcedureContext.class,0);
752 		}
753 		public DropViewContext dropView() {
754 			return getRuleContext(DropViewContext.class,0);
755 		}
756 		public DropTriggerContext dropTrigger() {
757 			return getRuleContext(DropTriggerContext.class,0);
758 		}
759 		public DropSequenceContext dropSequence() {
760 			return getRuleContext(DropSequenceContext.class,0);
761 		}
762 		public DropServiceContext dropService() {
763 			return getRuleContext(DropServiceContext.class,0);
764 		}
765 		public DropSchemaContext dropSchema() {
766 			return getRuleContext(DropSchemaContext.class,0);
767 		}
768 		public TruncateTableContext truncateTable() {
769 			return getRuleContext(TruncateTableContext.class,0);
770 		}
771 		public CreateFunctionContext createFunction() {
772 			return getRuleContext(CreateFunctionContext.class,0);
773 		}
774 		public SetTransactionContext setTransaction() {
775 			return getRuleContext(SetTransactionContext.class,0);
776 		}
777 		public BeginTransactionContext beginTransaction() {
778 			return getRuleContext(BeginTransactionContext.class,0);
779 		}
780 		public BeginDistributedTransactionContext beginDistributedTransaction() {
781 			return getRuleContext(BeginDistributedTransactionContext.class,0);
782 		}
783 		public SetImplicitTransactionsContext setImplicitTransactions() {
784 			return getRuleContext(SetImplicitTransactionsContext.class,0);
785 		}
786 		public CommitContext commit() {
787 			return getRuleContext(CommitContext.class,0);
788 		}
789 		public CommitWorkContext commitWork() {
790 			return getRuleContext(CommitWorkContext.class,0);
791 		}
792 		public RollbackContext rollback() {
793 			return getRuleContext(RollbackContext.class,0);
794 		}
795 		public RollbackWorkContext rollbackWork() {
796 			return getRuleContext(RollbackWorkContext.class,0);
797 		}
798 		public SavepointContext savepoint() {
799 			return getRuleContext(SavepointContext.class,0);
800 		}
801 		public GrantContext grant() {
802 			return getRuleContext(GrantContext.class,0);
803 		}
804 		public RevokeContext revoke() {
805 			return getRuleContext(RevokeContext.class,0);
806 		}
807 		public DenyContext deny() {
808 			return getRuleContext(DenyContext.class,0);
809 		}
810 		public CreateUserContext createUser() {
811 			return getRuleContext(CreateUserContext.class,0);
812 		}
813 		public DropUserContext dropUser() {
814 			return getRuleContext(DropUserContext.class,0);
815 		}
816 		public AlterUserContext alterUser() {
817 			return getRuleContext(AlterUserContext.class,0);
818 		}
819 		public CreateRoleContext createRole() {
820 			return getRuleContext(CreateRoleContext.class,0);
821 		}
822 		public DropRoleContext dropRole() {
823 			return getRuleContext(DropRoleContext.class,0);
824 		}
825 		public AlterRoleContext alterRole() {
826 			return getRuleContext(AlterRoleContext.class,0);
827 		}
828 		public CreateLoginContext createLogin() {
829 			return getRuleContext(CreateLoginContext.class,0);
830 		}
831 		public DropLoginContext dropLogin() {
832 			return getRuleContext(DropLoginContext.class,0);
833 		}
834 		public AlterLoginContext alterLogin() {
835 			return getRuleContext(AlterLoginContext.class,0);
836 		}
837 		public CallContext call() {
838 			return getRuleContext(CallContext.class,0);
839 		}
840 		public ExplainContext explain() {
841 			return getRuleContext(ExplainContext.class,0);
842 		}
843 		public SetUserContext setUser() {
844 			return getRuleContext(SetUserContext.class,0);
845 		}
846 		public RevertContext revert() {
847 			return getRuleContext(RevertContext.class,0);
848 		}
849 		public UpdateStatisticsContext updateStatistics() {
850 			return getRuleContext(UpdateStatisticsContext.class,0);
851 		}
852 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
853 		public ExecuteContext(ParserRuleContext parent, int invokingState) {
854 			super(parent, invokingState);
855 		}
856 		@Override public int getRuleIndex() { return RULE_execute; }
857 		@Override
858 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
859 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExecute(this);
860 			else return visitor.visitChildren(this);
861 		}
862 	}
863 
864 	public final ExecuteContext execute() throws RecognitionException {
865 		ExecuteContext _localctx = new ExecuteContext(_ctx, getState());
866 		enterRule(_localctx, 0, RULE_execute);
867 		int _la;
868 		try {
869 			enterOuterAlt(_localctx, 1);
870 			{
871 			setState(1043);
872 			_errHandler.sync(this);
873 			switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
874 			case 1:
875 				{
876 				setState(984);
877 				select();
878 				}
879 				break;
880 			case 2:
881 				{
882 				setState(985);
883 				insert();
884 				}
885 				break;
886 			case 3:
887 				{
888 				setState(986);
889 				update();
890 				}
891 				break;
892 			case 4:
893 				{
894 				setState(987);
895 				delete();
896 				}
897 				break;
898 			case 5:
899 				{
900 				setState(988);
901 				createIndex();
902 				}
903 				break;
904 			case 6:
905 				{
906 				setState(989);
907 				alterIndex();
908 				}
909 				break;
910 			case 7:
911 				{
912 				setState(990);
913 				dropIndex();
914 				}
915 				break;
916 			case 8:
917 				{
918 				setState(991);
919 				createTable();
920 				}
921 				break;
922 			case 9:
923 				{
924 				setState(992);
925 				createDatabase();
926 				}
927 				break;
928 			case 10:
929 				{
930 				setState(993);
931 				createProcedure();
932 				}
933 				break;
934 			case 11:
935 				{
936 				setState(994);
937 				createView();
938 				}
939 				break;
940 			case 12:
941 				{
942 				setState(995);
943 				createTrigger();
944 				}
945 				break;
946 			case 13:
947 				{
948 				setState(996);
949 				createSequence();
950 				}
951 				break;
952 			case 14:
953 				{
954 				setState(997);
955 				createService();
956 				}
957 				break;
958 			case 15:
959 				{
960 				setState(998);
961 				createSchema();
962 				}
963 				break;
964 			case 16:
965 				{
966 				setState(999);
967 				alterTable();
968 				}
969 				break;
970 			case 17:
971 				{
972 				setState(1000);
973 				alterTrigger();
974 				}
975 				break;
976 			case 18:
977 				{
978 				setState(1001);
979 				alterSequence();
980 				}
981 				break;
982 			case 19:
983 				{
984 				setState(1002);
985 				alterDatabase();
986 				}
987 				break;
988 			case 20:
989 				{
990 				setState(1003);
991 				alterService();
992 				}
993 				break;
994 			case 21:
995 				{
996 				setState(1004);
997 				alterSchema();
998 				}
999 				break;
1000 			case 22:
1001 				{
1002 				setState(1005);
1003 				alterView();
1004 				}
1005 				break;
1006 			case 23:
1007 				{
1008 				setState(1006);
1009 				dropTable();
1010 				}
1011 				break;
1012 			case 24:
1013 				{
1014 				setState(1007);
1015 				dropDatabase();
1016 				}
1017 				break;
1018 			case 25:
1019 				{
1020 				setState(1008);
1021 				dropFunction();
1022 				}
1023 				break;
1024 			case 26:
1025 				{
1026 				setState(1009);
1027 				dropProcedure();
1028 				}
1029 				break;
1030 			case 27:
1031 				{
1032 				setState(1010);
1033 				dropView();
1034 				}
1035 				break;
1036 			case 28:
1037 				{
1038 				setState(1011);
1039 				dropTrigger();
1040 				}
1041 				break;
1042 			case 29:
1043 				{
1044 				setState(1012);
1045 				dropSequence();
1046 				}
1047 				break;
1048 			case 30:
1049 				{
1050 				setState(1013);
1051 				dropService();
1052 				}
1053 				break;
1054 			case 31:
1055 				{
1056 				setState(1014);
1057 				dropSchema();
1058 				}
1059 				break;
1060 			case 32:
1061 				{
1062 				setState(1015);
1063 				truncateTable();
1064 				}
1065 				break;
1066 			case 33:
1067 				{
1068 				setState(1016);
1069 				createFunction();
1070 				}
1071 				break;
1072 			case 34:
1073 				{
1074 				setState(1017);
1075 				setTransaction();
1076 				}
1077 				break;
1078 			case 35:
1079 				{
1080 				setState(1018);
1081 				beginTransaction();
1082 				}
1083 				break;
1084 			case 36:
1085 				{
1086 				setState(1019);
1087 				beginDistributedTransaction();
1088 				}
1089 				break;
1090 			case 37:
1091 				{
1092 				setState(1020);
1093 				setImplicitTransactions();
1094 				}
1095 				break;
1096 			case 38:
1097 				{
1098 				setState(1021);
1099 				commit();
1100 				}
1101 				break;
1102 			case 39:
1103 				{
1104 				setState(1022);
1105 				commitWork();
1106 				}
1107 				break;
1108 			case 40:
1109 				{
1110 				setState(1023);
1111 				rollback();
1112 				}
1113 				break;
1114 			case 41:
1115 				{
1116 				setState(1024);
1117 				rollbackWork();
1118 				}
1119 				break;
1120 			case 42:
1121 				{
1122 				setState(1025);
1123 				savepoint();
1124 				}
1125 				break;
1126 			case 43:
1127 				{
1128 				setState(1026);
1129 				grant();
1130 				}
1131 				break;
1132 			case 44:
1133 				{
1134 				setState(1027);
1135 				revoke();
1136 				}
1137 				break;
1138 			case 45:
1139 				{
1140 				setState(1028);
1141 				deny();
1142 				}
1143 				break;
1144 			case 46:
1145 				{
1146 				setState(1029);
1147 				createUser();
1148 				}
1149 				break;
1150 			case 47:
1151 				{
1152 				setState(1030);
1153 				dropUser();
1154 				}
1155 				break;
1156 			case 48:
1157 				{
1158 				setState(1031);
1159 				alterUser();
1160 				}
1161 				break;
1162 			case 49:
1163 				{
1164 				setState(1032);
1165 				createRole();
1166 				}
1167 				break;
1168 			case 50:
1169 				{
1170 				setState(1033);
1171 				dropRole();
1172 				}
1173 				break;
1174 			case 51:
1175 				{
1176 				setState(1034);
1177 				alterRole();
1178 				}
1179 				break;
1180 			case 52:
1181 				{
1182 				setState(1035);
1183 				createLogin();
1184 				}
1185 				break;
1186 			case 53:
1187 				{
1188 				setState(1036);
1189 				dropLogin();
1190 				}
1191 				break;
1192 			case 54:
1193 				{
1194 				setState(1037);
1195 				alterLogin();
1196 				}
1197 				break;
1198 			case 55:
1199 				{
1200 				setState(1038);
1201 				call();
1202 				}
1203 				break;
1204 			case 56:
1205 				{
1206 				setState(1039);
1207 				explain();
1208 				}
1209 				break;
1210 			case 57:
1211 				{
1212 				setState(1040);
1213 				setUser();
1214 				}
1215 				break;
1216 			case 58:
1217 				{
1218 				setState(1041);
1219 				revert();
1220 				}
1221 				break;
1222 			case 59:
1223 				{
1224 				setState(1042);
1225 				updateStatistics();
1226 				}
1227 				break;
1228 			}
1229 			setState(1046);
1230 			_errHandler.sync(this);
1231 			_la = _input.LA(1);
1232 			if (_la==SEMI_) {
1233 				{
1234 				setState(1045);
1235 				match(SEMI_);
1236 				}
1237 			}
1238 
1239 			}
1240 		}
1241 		catch (RecognitionException re) {
1242 			_localctx.exception = re;
1243 			_errHandler.reportError(this, re);
1244 			_errHandler.recover(this, re);
1245 		}
1246 		finally {
1247 			exitRule();
1248 		}
1249 		return _localctx;
1250 	}
1251 
1252 	public static class SetTransactionContext extends ParserRuleContext {
1253 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
1254 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1255 		public TerminalNode ISOLATION() { return getToken(SQLServerStatementParser.ISOLATION, 0); }
1256 		public TerminalNode LEVEL() { return getToken(SQLServerStatementParser.LEVEL, 0); }
1257 		public IsolationLevelContext isolationLevel() {
1258 			return getRuleContext(IsolationLevelContext.class,0);
1259 		}
1260 		public SetTransactionContext(ParserRuleContext parent, int invokingState) {
1261 			super(parent, invokingState);
1262 		}
1263 		@Override public int getRuleIndex() { return RULE_setTransaction; }
1264 		@Override
1265 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1266 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetTransaction(this);
1267 			else return visitor.visitChildren(this);
1268 		}
1269 	}
1270 
1271 	public final SetTransactionContext setTransaction() throws RecognitionException {
1272 		SetTransactionContext _localctx = new SetTransactionContext(_ctx, getState());
1273 		enterRule(_localctx, 2, RULE_setTransaction);
1274 		try {
1275 			enterOuterAlt(_localctx, 1);
1276 			{
1277 			setState(1048);
1278 			match(SET);
1279 			setState(1049);
1280 			match(TRANSACTION);
1281 			setState(1050);
1282 			match(ISOLATION);
1283 			setState(1051);
1284 			match(LEVEL);
1285 			setState(1052);
1286 			isolationLevel();
1287 			}
1288 		}
1289 		catch (RecognitionException re) {
1290 			_localctx.exception = re;
1291 			_errHandler.reportError(this, re);
1292 			_errHandler.recover(this, re);
1293 		}
1294 		finally {
1295 			exitRule();
1296 		}
1297 		return _localctx;
1298 	}
1299 
1300 	public static class IsolationLevelContext extends ParserRuleContext {
1301 		public TerminalNode READ() { return getToken(SQLServerStatementParser.READ, 0); }
1302 		public TerminalNode UNCOMMITTED() { return getToken(SQLServerStatementParser.UNCOMMITTED, 0); }
1303 		public TerminalNode COMMITTED() { return getToken(SQLServerStatementParser.COMMITTED, 0); }
1304 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
1305 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
1306 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
1307 		public IsolationLevelContext(ParserRuleContext parent, int invokingState) {
1308 			super(parent, invokingState);
1309 		}
1310 		@Override public int getRuleIndex() { return RULE_isolationLevel; }
1311 		@Override
1312 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1313 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIsolationLevel(this);
1314 			else return visitor.visitChildren(this);
1315 		}
1316 	}
1317 
1318 	public final IsolationLevelContext isolationLevel() throws RecognitionException {
1319 		IsolationLevelContext _localctx = new IsolationLevelContext(_ctx, getState());
1320 		enterRule(_localctx, 4, RULE_isolationLevel);
1321 		try {
1322 			setState(1062);
1323 			_errHandler.sync(this);
1324 			switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
1325 			case 1:
1326 				enterOuterAlt(_localctx, 1);
1327 				{
1328 				setState(1054);
1329 				match(READ);
1330 				setState(1055);
1331 				match(UNCOMMITTED);
1332 				}
1333 				break;
1334 			case 2:
1335 				enterOuterAlt(_localctx, 2);
1336 				{
1337 				setState(1056);
1338 				match(READ);
1339 				setState(1057);
1340 				match(COMMITTED);
1341 				}
1342 				break;
1343 			case 3:
1344 				enterOuterAlt(_localctx, 3);
1345 				{
1346 				setState(1058);
1347 				match(REPEATABLE);
1348 				setState(1059);
1349 				match(READ);
1350 				}
1351 				break;
1352 			case 4:
1353 				enterOuterAlt(_localctx, 4);
1354 				{
1355 				setState(1060);
1356 				match(SNAPSHOT);
1357 				}
1358 				break;
1359 			case 5:
1360 				enterOuterAlt(_localctx, 5);
1361 				{
1362 				setState(1061);
1363 				match(SERIALIZABLE);
1364 				}
1365 				break;
1366 			}
1367 		}
1368 		catch (RecognitionException re) {
1369 			_localctx.exception = re;
1370 			_errHandler.reportError(this, re);
1371 			_errHandler.recover(this, re);
1372 		}
1373 		finally {
1374 			exitRule();
1375 		}
1376 		return _localctx;
1377 	}
1378 
1379 	public static class SetImplicitTransactionsContext extends ParserRuleContext {
1380 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
1381 		public TerminalNode IMPLICIT_TRANSACTIONS() { return getToken(SQLServerStatementParser.IMPLICIT_TRANSACTIONS, 0); }
1382 		public ImplicitTransactionsValueContext implicitTransactionsValue() {
1383 			return getRuleContext(ImplicitTransactionsValueContext.class,0);
1384 		}
1385 		public SetImplicitTransactionsContext(ParserRuleContext parent, int invokingState) {
1386 			super(parent, invokingState);
1387 		}
1388 		@Override public int getRuleIndex() { return RULE_setImplicitTransactions; }
1389 		@Override
1390 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1391 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetImplicitTransactions(this);
1392 			else return visitor.visitChildren(this);
1393 		}
1394 	}
1395 
1396 	public final SetImplicitTransactionsContext setImplicitTransactions() throws RecognitionException {
1397 		SetImplicitTransactionsContext _localctx = new SetImplicitTransactionsContext(_ctx, getState());
1398 		enterRule(_localctx, 6, RULE_setImplicitTransactions);
1399 		try {
1400 			enterOuterAlt(_localctx, 1);
1401 			{
1402 			setState(1064);
1403 			match(SET);
1404 			setState(1065);
1405 			match(IMPLICIT_TRANSACTIONS);
1406 			setState(1066);
1407 			implicitTransactionsValue();
1408 			}
1409 		}
1410 		catch (RecognitionException re) {
1411 			_localctx.exception = re;
1412 			_errHandler.reportError(this, re);
1413 			_errHandler.recover(this, re);
1414 		}
1415 		finally {
1416 			exitRule();
1417 		}
1418 		return _localctx;
1419 	}
1420 
1421 	public static class ImplicitTransactionsValueContext extends ParserRuleContext {
1422 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
1423 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
1424 		public ImplicitTransactionsValueContext(ParserRuleContext parent, int invokingState) {
1425 			super(parent, invokingState);
1426 		}
1427 		@Override public int getRuleIndex() { return RULE_implicitTransactionsValue; }
1428 		@Override
1429 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1430 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitImplicitTransactionsValue(this);
1431 			else return visitor.visitChildren(this);
1432 		}
1433 	}
1434 
1435 	public final ImplicitTransactionsValueContext implicitTransactionsValue() throws RecognitionException {
1436 		ImplicitTransactionsValueContext _localctx = new ImplicitTransactionsValueContext(_ctx, getState());
1437 		enterRule(_localctx, 8, RULE_implicitTransactionsValue);
1438 		int _la;
1439 		try {
1440 			enterOuterAlt(_localctx, 1);
1441 			{
1442 			setState(1068);
1443 			_la = _input.LA(1);
1444 			if ( !(_la==ON || _la==OFF) ) {
1445 			_errHandler.recoverInline(this);
1446 			}
1447 			else {
1448 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1449 				_errHandler.reportMatch(this);
1450 				consume();
1451 			}
1452 			}
1453 		}
1454 		catch (RecognitionException re) {
1455 			_localctx.exception = re;
1456 			_errHandler.reportError(this, re);
1457 			_errHandler.recover(this, re);
1458 		}
1459 		finally {
1460 			exitRule();
1461 		}
1462 		return _localctx;
1463 	}
1464 
1465 	public static class BeginTransactionContext extends ParserRuleContext {
1466 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
1467 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1468 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1469 		public TransactionNameContext transactionName() {
1470 			return getRuleContext(TransactionNameContext.class,0);
1471 		}
1472 		public TransactionVariableNameContext transactionVariableName() {
1473 			return getRuleContext(TransactionVariableNameContext.class,0);
1474 		}
1475 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
1476 		public TerminalNode MARK() { return getToken(SQLServerStatementParser.MARK, 0); }
1477 		public StringLiteralsContext stringLiterals() {
1478 			return getRuleContext(StringLiteralsContext.class,0);
1479 		}
1480 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
1481 		public BeginTransactionContext(ParserRuleContext parent, int invokingState) {
1482 			super(parent, invokingState);
1483 		}
1484 		@Override public int getRuleIndex() { return RULE_beginTransaction; }
1485 		@Override
1486 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1487 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBeginTransaction(this);
1488 			else return visitor.visitChildren(this);
1489 		}
1490 	}
1491 
1492 	public final BeginTransactionContext beginTransaction() throws RecognitionException {
1493 		BeginTransactionContext _localctx = new BeginTransactionContext(_ctx, getState());
1494 		enterRule(_localctx, 10, RULE_beginTransaction);
1495 		int _la;
1496 		try {
1497 			enterOuterAlt(_localctx, 1);
1498 			{
1499 			setState(1070);
1500 			match(BEGIN);
1501 			setState(1071);
1502 			_la = _input.LA(1);
1503 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1504 			_errHandler.recoverInline(this);
1505 			}
1506 			else {
1507 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1508 				_errHandler.reportMatch(this);
1509 				consume();
1510 			}
1511 			setState(1084);
1512 			_errHandler.sync(this);
1513 			_la = _input.LA(1);
1514 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)) | (1L << (ROW - 184)) | (1L << (ROWS - 184)) | (1L << (XOR - 184)) | (1L << (ALWAYS - 184)))) != 0) || ((((_la - 254)) & ~0x3f) == 0 && ((1L << (_la - 254)) & ((1L << (ROLE - 254)) | (1L << (START - 254)) | (1L << (ALGORITHM - 254)) | (1L << (AUTO - 254)) | (1L << (BLOCKERS - 254)) | (1L << (CLUSTERED - 254)) | (1L << (NONCLUSTERED - 254)) | (1L << (COLUMNSTORE - 254)) | (1L << (CONTENT - 254)) | (1L << (YEARS - 254)) | (1L << (MONTHS - 254)) | (1L << (WEEKS - 254)) | (1L << (DAYS - 254)) | (1L << (MINUTES - 254)) | (1L << (DENY - 254)) | (1L << (DETERMINISTIC - 254)) | (1L << (DISTRIBUTION - 254)) | (1L << (DOCUMENT - 254)) | (1L << (DURABILITY - 254)) | (1L << (ENCRYPTED - 254)) | (1L << (FILESTREAM - 254)) | (1L << (FILETABLE - 254)) | (1L << (FILLFACTOR - 254)) | (1L << (FOLLOWING - 254)) | (1L << (HASH - 254)) | (1L << (HEAP - 254)) | (1L << (INBOUND - 254)) | (1L << (OUTBOUND - 254)) | (1L << (UNBOUNDED - 254)) | (1L << (INFINITE - 254)) | (1L << (LOGIN - 254)) | (1L << (MASKED - 254)) | (1L << (MAXDOP - 254)) | (1L << (MOVE - 254)) | (1L << (NOCHECK - 254)) | (1L << (OBJECT - 254)) | (1L << (ONLINE - 254)) | (1L << (OVER - 254)) | (1L << (PAGE - 254)) | (1L << (PAUSED - 254)) | (1L << (PERIOD - 254)) | (1L << (PERSISTED - 254)) | (1L << (PRECEDING - 254)) | (1L << (RANDOMIZED - 254)) | (1L << (RANGE - 254)) | (1L << (REBUILD - 254)) | (1L << (REPLICATE - 254)) | (1L << (REPLICATION - 254)) | (1L << (RESUMABLE - 254)) | (1L << (ROWGUIDCOL - 254)) | (1L << (SAVE - 254)) | (1L << (SELF - 254)) | (1L << (SPARSE - 254)) | (1L << (SWITCH - 254)) | (1L << (TRAN - 254)) | (1L << (TRANCOUNT - 254)))) != 0) || ((((_la - 324)) & ~0x3f) == 0 && ((1L << (_la - 324)) & ((1L << (CONTROL - 324)) | (1L << (CONCAT - 324)) | (1L << (TAKE - 324)) | (1L << (OWNERSHIP - 324)) | (1L << (DEFINITION - 324)) | (1L << (APPLICATION - 324)) | (1L << (ASSEMBLY - 324)) | (1L << (SYMMETRIC - 324)) | (1L << (ASYMMETRIC - 324)) | (1L << (SERVER - 324)) | (1L << (RECEIVE - 324)) | (1L << (CHANGE - 324)) | (1L << (TRACE - 324)) | (1L << (TRACKING - 324)) | (1L << (RESOURCES - 324)) | (1L << (SETTINGS - 324)) | (1L << (STATE - 324)) | (1L << (AVAILABILITY - 324)) | (1L << (CREDENTIAL - 324)) | (1L << (ENDPOINT - 324)) | (1L << (EVENT - 324)) | (1L << (NOTIFICATION - 324)) | (1L << (LINKED - 324)) | (1L << (AUDIT - 324)) | (1L << (DDL - 324)) | (1L << (XML - 324)) | (1L << (IMPERSONATE - 324)) | (1L << (SECURABLES - 324)) | (1L << (AUTHENTICATE - 324)) | (1L << (EXTERNAL - 324)) | (1L << (ACCESS - 324)) | (1L << (ADMINISTER - 324)) | (1L << (BULK - 324)) | (1L << (OPERATIONS - 324)) | (1L << (UNSAFE - 324)) | (1L << (SHUTDOWN - 324)) | (1L << (SCOPED - 324)) | (1L << (CONFIGURATION - 324)) | (1L << (DATASPACE - 324)) | (1L << (SERVICE - 324)) | (1L << (CERTIFICATE - 324)) | (1L << (CONTRACT - 324)) | (1L << (ENCRYPTION - 324)) | (1L << (MASTER - 324)) | (1L << (DATA - 324)) | (1L << (SOURCE - 324)) | (1L << (FILE - 324)) | (1L << (FORMAT - 324)) | (1L << (LIBRARY - 324)) | (1L << (FULLTEXT - 324)) | (1L << (MASK - 324)) | (1L << (UNMASK - 324)) | (1L << (MESSAGE - 324)) | (1L << (REMOTE - 324)) | (1L << (BINDING - 324)) | (1L << (ROUTE - 324)) | (1L << (SECURITY - 324)) | (1L << (POLICY - 324)) | (1L << (AGGREGATE - 324)) | (1L << (QUEUE - 324)) | (1L << (RULE - 324)) | (1L << (SYNONYM - 324)) | (1L << (COLLECTION - 324)) | (1L << (SCRIPT - 324)))) != 0) || ((((_la - 388)) & ~0x3f) == 0 && ((1L << (_la - 388)) & ((1L << (KILL - 388)) | (1L << (BACKUP - 388)) | (1L << (LOG - 388)) | (1L << (SHOWPLAN - 388)) | (1L << (SUBSCRIBE - 388)) | (1L << (QUERY - 388)) | (1L << (NOTIFICATIONS - 388)) | (1L << (CHECKPOINT - 388)) | (1L << (SEQUENCE - 388)) | (1L << (ABORT_AFTER_WAIT - 388)) | (1L << (ALLOW_PAGE_LOCKS - 388)) | (1L << (ALLOW_ROW_LOCKS - 388)) | (1L << (ALL_SPARSE_COLUMNS - 388)) | (1L << (BUCKET_COUNT - 388)) | (1L << (COLUMNSTORE_ARCHIVE - 388)) | (1L << (COLUMN_ENCRYPTION_KEY - 388)) | (1L << (COLUMN_SET - 388)) | (1L << (COMPRESSION_DELAY - 388)) | (1L << (DATABASE_DEAULT - 388)) | (1L << (DATA_COMPRESSION - 388)) | (1L << (DATA_CONSISTENCY_CHECK - 388)) | (1L << (ENCRYPTION_TYPE - 388)) | (1L << (SYSTEM_TIME - 388)) | (1L << (SYSTEM_VERSIONING - 388)) | (1L << (TEXTIMAGE_ON - 388)) | (1L << (WAIT_AT_LOW_PRIORITY - 388)) | (1L << (STATISTICS_INCREMENTAL - 388)) | (1L << (STATISTICS_NORECOMPUTE - 388)) | (1L << (ROUND_ROBIN - 388)) | (1L << (SCHEMA_AND_DATA - 388)) | (1L << (SCHEMA_ONLY - 388)) | (1L << (SORT_IN_TEMPDB - 388)) | (1L << (IGNORE_DUP_KEY - 388)) | (1L << (IMPLICIT_TRANSACTIONS - 388)) | (1L << (MAX_DURATION - 388)) | (1L << (MEMORY_OPTIMIZED - 388)) | (1L << (MIGRATION_STATE - 388)) | (1L << (PAD_INDEX - 388)) | (1L << (REMOTE_DATA_ARCHIVE - 388)) | (1L << (FILESTREAM_ON - 388)) | (1L << (FILETABLE_COLLATE_FILENAME - 388)) | (1L << (FILETABLE_DIRECTORY - 388)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 388)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 388)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 388)) | (1L << (FILTER_PREDICATE - 388)) | (1L << (HISTORY_RETENTION_PERIOD - 388)) | (1L << (HISTORY_TABLE - 388)) | (1L << (LOCK_ESCALATION - 388)) | (1L << (DROP_EXISTING - 388)) | (1L << (ROW_NUMBER - 388)) | (1L << (FIRST - 388)) | (1L << (DATETIME2 - 388)))) != 0) || ((((_la - 458)) & ~0x3f) == 0 && ((1L << (_la - 458)) & ((1L << (OUTPUT - 458)) | (1L << (INSERTED - 458)) | (1L << (DELETED - 458)) | (1L << (FILENAME - 458)) | (1L << (SIZE - 458)) | (1L << (MAXSIZE - 458)) | (1L << (FILEGROWTH - 458)) | (1L << (UNLIMITED - 458)) | (1L << (KB - 458)) | (1L << (MB - 458)) | (1L << (GB - 458)) | (1L << (TB - 458)) | (1L << (CONTAINS - 458)) | (1L << (MEMORY_OPTIMIZED_DATA - 458)) | (1L << (FILEGROUP - 458)) | (1L << (NON_TRANSACTED_ACCESS - 458)) | (1L << (DB_CHAINING - 458)) | (1L << (TRUSTWORTHY - 458)) | (1L << (FORWARD_ONLY - 458)) | (1L << (KEYSET - 458)) | (1L << (FAST_FORWARD - 458)) | (1L << (SCROLL_LOCKS - 458)) | (1L << (OPTIMISTIC - 458)) | (1L << (TYPE_WARNING - 458)) | (1L << (SCHEMABINDING - 458)))) != 0) || ((((_la - 522)) & ~0x3f) == 0 && ((1L << (_la - 522)) & ((1L << (CALLER - 522)) | (1L << (OWNER - 522)) | (1L << (SNAPSHOT - 522)) | (1L << (REPEATABLE - 522)) | (1L << (SERIALIZABLE - 522)) | (1L << (NATIVE_COMPILATION - 522)) | (1L << (VIEW_METADATA - 522)) | (1L << (INSTEAD - 522)) | (1L << (APPEND - 522)) | (1L << (INCREMENT - 522)) | (1L << (CACHE - 522)) | (1L << (MINVALUE - 522)) | (1L << (MAXVALUE - 522)) | (1L << (RESTART - 522)) | (1L << (LOB_COMPACTION - 522)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 522)) | (1L << (REORGANIZE - 522)) | (1L << (RESUME - 522)) | (1L << (PAUSE - 522)) | (1L << (ABORT - 522)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 522)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 522)) | (1L << (IMMEDIATE - 522)) | (1L << (NO_WAIT - 522)) | (1L << (TARGET_RECOVERY_TIME - 522)) | (1L << (SECONDS - 522)) | (1L << (HONOR_BROKER_PRIORITY - 522)) | (1L << (ERROR_BROKER_CONVERSATIONS - 522)) | (1L << (NEW_BROKER - 522)) | (1L << (DISABLE_BROKER - 522)) | (1L << (ENABLE_BROKER - 522)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 522)) | (1L << (READ_COMMITTED_SNAPSHOT - 522)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 522)) | (1L << (RECURSIVE_TRIGGERS - 522)) | (1L << (QUOTED_IDENTIFIER - 522)) | (1L << (NUMERIC_ROUNDABORT - 522)) | (1L << (CONCAT_NULL_YIELDS_NULL - 522)) | (1L << (COMPATIBILITY_LEVEL - 522)) | (1L << (ARITHABORT - 522)) | (1L << (ANSI_WARNINGS - 522)) | (1L << (ANSI_PADDING - 522)) | (1L << (ANSI_NULLS - 522)))) != 0) || ((((_la - 586)) & ~0x3f) == 0 && ((1L << (_la - 586)) & ((1L << (ANSI_NULL_DEFAULT - 586)) | (1L << (PAGE_VERIFY - 586)) | (1L << (CHECKSUM - 586)) | (1L << (TORN_PAGE_DETECTION - 586)) | (1L << (BULK_LOGGED - 586)) | (1L << (RECOVERY - 586)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 586)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 586)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 586)) | (1L << (EXECUTION_COUNT - 586)) | (1L << (QUERY_CAPTURE_POLICY - 586)) | (1L << (WAIT_STATS_CAPTURE_MODE - 586)) | (1L << (MAX_PLANS_PER_QUERY - 586)) | (1L << (QUERY_CAPTURE_MODE - 586)) | (1L << (SIZE_BASED_CLEANUP_MODE - 586)) | (1L << (INTERVAL_LENGTH_MINUTES - 586)) | (1L << (MAX_STORAGE_SIZE_MB - 586)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 586)) | (1L << (CLEANUP_POLICY - 586)) | (1L << (CUSTOM - 586)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 586)) | (1L << (OPERATION_MODE - 586)) | (1L << (QUERY_STORE - 586)) | (1L << (CURSOR_DEFAULT - 586)) | (1L << (GLOBAL - 586)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 586)) | (1L << (HOURS - 586)) | (1L << (CHANGE_RETENTION - 586)) | (1L << (AUTO_CLEANUP - 586)) | (1L << (CHANGE_TRACKING - 586)) | (1L << (AUTOMATIC_TUNING - 586)) | (1L << (FORCE_LAST_GOOD_PLAN - 586)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 586)) | (1L << (AUTO_UPDATE_STATISTICS - 586)) | (1L << (AUTO_SHRINK - 586)) | (1L << (AUTO_CREATE_STATISTICS - 586)) | (1L << (INCREMENTAL - 586)) | (1L << (AUTO_CLOSE - 586)) | (1L << (DATA_RETENTION - 586)) | (1L << (TEMPORAL_HISTORY_RETENTION - 586)) | (1L << (EDITION - 586)) | (1L << (MIXED_PAGE_ALLOCATION - 586)) | (1L << (DISABLED - 586)) | (1L << (ALLOWED - 586)) | (1L << (HADR - 586)) | (1L << (MULTI_USER - 586)) | (1L << (RESTRICTED_USER - 586)) | (1L << (SINGLE_USER - 586)) | (1L << (OFFLINE - 586)) | (1L << (EMERGENCY - 586)) | (1L << (SUSPEND - 586)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 586)) | (1L << (ELASTIC_POOL - 586)) | (1L << (SERVICE_OBJECTIVE - 586)) | (1L << (DATABASE_NAME - 586)) | (1L << (ALLOW_CONNECTIONS - 586)) | (1L << (GEO - 586)) | (1L << (NAMED - 586)) | (1L << (DATEFIRST - 586)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 586)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 586)) | (1L << (SECONDARY - 586)) | (1L << (FAILOVER - 586)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 586)))) != 0) || ((((_la - 650)) & ~0x3f) == 0 && ((1L << (_la - 650)) & ((1L << (DEFAULT_LANGUAGE - 650)) | (1L << (INLINE - 650)) | (1L << (NESTED_TRIGGERS - 650)) | (1L << (TRANSFORM_NOISE_WORDS - 650)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 650)) | (1L << (PERSISTENT_LOG_BUFFER - 650)) | (1L << (DIRECTORY_NAME - 650)) | (1L << (DATEFORMAT - 650)) | (1L << (DELAYED_DURABILITY - 650)) | (1L << (AUTHORIZATION - 650)) | (1L << (TRANSFER - 650)) | (1L << (PROVIDER - 650)) | (1L << (SEARCH - 650)) | (1L << (MEMBER - 650)) | (1L << (IDENTIFIER_ - 650)) | (1L << (DELIMITED_IDENTIFIER_ - 650)))) != 0)) {
1515 				{
1516 				setState(1074);
1517 				_errHandler.sync(this);
1518 				switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
1519 				case 1:
1520 					{
1521 					setState(1072);
1522 					transactionName();
1523 					}
1524 					break;
1525 				case 2:
1526 					{
1527 					setState(1073);
1528 					transactionVariableName();
1529 					}
1530 					break;
1531 				}
1532 				setState(1082);
1533 				_errHandler.sync(this);
1534 				_la = _input.LA(1);
1535 				if (_la==WITH) {
1536 					{
1537 					setState(1076);
1538 					match(WITH);
1539 					setState(1077);
1540 					match(MARK);
1541 					setState(1080);
1542 					_errHandler.sync(this);
1543 					switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
1544 					case 1:
1545 						{
1546 						setState(1078);
1547 						stringLiterals();
1548 						}
1549 						break;
1550 					case 2:
1551 						{
1552 						setState(1079);
1553 						match(NCHAR_TEXT);
1554 						}
1555 						break;
1556 					}
1557 					}
1558 				}
1559 
1560 				}
1561 			}
1562 
1563 			}
1564 		}
1565 		catch (RecognitionException re) {
1566 			_localctx.exception = re;
1567 			_errHandler.reportError(this, re);
1568 			_errHandler.recover(this, re);
1569 		}
1570 		finally {
1571 			exitRule();
1572 		}
1573 		return _localctx;
1574 	}
1575 
1576 	public static class BeginDistributedTransactionContext extends ParserRuleContext {
1577 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
1578 		public TerminalNode DISTRIBUTED() { return getToken(SQLServerStatementParser.DISTRIBUTED, 0); }
1579 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1580 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1581 		public TransactionNameContext transactionName() {
1582 			return getRuleContext(TransactionNameContext.class,0);
1583 		}
1584 		public TransactionVariableNameContext transactionVariableName() {
1585 			return getRuleContext(TransactionVariableNameContext.class,0);
1586 		}
1587 		public BeginDistributedTransactionContext(ParserRuleContext parent, int invokingState) {
1588 			super(parent, invokingState);
1589 		}
1590 		@Override public int getRuleIndex() { return RULE_beginDistributedTransaction; }
1591 		@Override
1592 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1593 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBeginDistributedTransaction(this);
1594 			else return visitor.visitChildren(this);
1595 		}
1596 	}
1597 
1598 	public final BeginDistributedTransactionContext beginDistributedTransaction() throws RecognitionException {
1599 		BeginDistributedTransactionContext _localctx = new BeginDistributedTransactionContext(_ctx, getState());
1600 		enterRule(_localctx, 12, RULE_beginDistributedTransaction);
1601 		int _la;
1602 		try {
1603 			enterOuterAlt(_localctx, 1);
1604 			{
1605 			setState(1086);
1606 			match(BEGIN);
1607 			setState(1087);
1608 			match(DISTRIBUTED);
1609 			setState(1088);
1610 			_la = _input.LA(1);
1611 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1612 			_errHandler.recoverInline(this);
1613 			}
1614 			else {
1615 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1616 				_errHandler.reportMatch(this);
1617 				consume();
1618 			}
1619 			setState(1091);
1620 			_errHandler.sync(this);
1621 			switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
1622 			case 1:
1623 				{
1624 				setState(1089);
1625 				transactionName();
1626 				}
1627 				break;
1628 			case 2:
1629 				{
1630 				setState(1090);
1631 				transactionVariableName();
1632 				}
1633 				break;
1634 			}
1635 			}
1636 		}
1637 		catch (RecognitionException re) {
1638 			_localctx.exception = re;
1639 			_errHandler.reportError(this, re);
1640 			_errHandler.recover(this, re);
1641 		}
1642 		finally {
1643 			exitRule();
1644 		}
1645 		return _localctx;
1646 	}
1647 
1648 	public static class CommitContext extends ParserRuleContext {
1649 		public TerminalNode COMMIT() { return getToken(SQLServerStatementParser.COMMIT, 0); }
1650 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
1651 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
1652 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
1653 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
1654 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
1655 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1656 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1657 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
1658 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
1659 		public TransactionNameContext transactionName() {
1660 			return getRuleContext(TransactionNameContext.class,0);
1661 		}
1662 		public TransactionVariableNameContext transactionVariableName() {
1663 			return getRuleContext(TransactionVariableNameContext.class,0);
1664 		}
1665 		public CommitContext(ParserRuleContext parent, int invokingState) {
1666 			super(parent, invokingState);
1667 		}
1668 		@Override public int getRuleIndex() { return RULE_commit; }
1669 		@Override
1670 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1671 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommit(this);
1672 			else return visitor.visitChildren(this);
1673 		}
1674 	}
1675 
1676 	public final CommitContext commit() throws RecognitionException {
1677 		CommitContext _localctx = new CommitContext(_ctx, getState());
1678 		enterRule(_localctx, 14, RULE_commit);
1679 		int _la;
1680 		try {
1681 			enterOuterAlt(_localctx, 1);
1682 			{
1683 			setState(1093);
1684 			match(COMMIT);
1685 			setState(1099);
1686 			_errHandler.sync(this);
1687 			_la = _input.LA(1);
1688 			if (_la==TRANSACTION || _la==TRAN) {
1689 				{
1690 				setState(1094);
1691 				_la = _input.LA(1);
1692 				if ( !(_la==TRANSACTION || _la==TRAN) ) {
1693 				_errHandler.recoverInline(this);
1694 				}
1695 				else {
1696 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1697 					_errHandler.reportMatch(this);
1698 					consume();
1699 				}
1700 				setState(1097);
1701 				_errHandler.sync(this);
1702 				switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
1703 				case 1:
1704 					{
1705 					setState(1095);
1706 					transactionName();
1707 					}
1708 					break;
1709 				case 2:
1710 					{
1711 					setState(1096);
1712 					transactionVariableName();
1713 					}
1714 					break;
1715 				}
1716 				}
1717 			}
1718 
1719 			setState(1107);
1720 			_errHandler.sync(this);
1721 			_la = _input.LA(1);
1722 			if (_la==WITH) {
1723 				{
1724 				setState(1101);
1725 				match(WITH);
1726 				setState(1102);
1727 				match(LP_);
1728 				setState(1103);
1729 				match(DELAYED_DURABILITY);
1730 				setState(1104);
1731 				match(EQ_);
1732 				setState(1105);
1733 				_la = _input.LA(1);
1734 				if ( !(_la==ON || _la==OFF) ) {
1735 				_errHandler.recoverInline(this);
1736 				}
1737 				else {
1738 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1739 					_errHandler.reportMatch(this);
1740 					consume();
1741 				}
1742 				setState(1106);
1743 				match(RP_);
1744 				}
1745 			}
1746 
1747 			}
1748 		}
1749 		catch (RecognitionException re) {
1750 			_localctx.exception = re;
1751 			_errHandler.reportError(this, re);
1752 			_errHandler.recover(this, re);
1753 		}
1754 		finally {
1755 			exitRule();
1756 		}
1757 		return _localctx;
1758 	}
1759 
1760 	public static class CommitWorkContext extends ParserRuleContext {
1761 		public TerminalNode COMMIT() { return getToken(SQLServerStatementParser.COMMIT, 0); }
1762 		public TerminalNode WORK() { return getToken(SQLServerStatementParser.WORK, 0); }
1763 		public CommitWorkContext(ParserRuleContext parent, int invokingState) {
1764 			super(parent, invokingState);
1765 		}
1766 		@Override public int getRuleIndex() { return RULE_commitWork; }
1767 		@Override
1768 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1769 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommitWork(this);
1770 			else return visitor.visitChildren(this);
1771 		}
1772 	}
1773 
1774 	public final CommitWorkContext commitWork() throws RecognitionException {
1775 		CommitWorkContext _localctx = new CommitWorkContext(_ctx, getState());
1776 		enterRule(_localctx, 16, RULE_commitWork);
1777 		int _la;
1778 		try {
1779 			enterOuterAlt(_localctx, 1);
1780 			{
1781 			setState(1109);
1782 			match(COMMIT);
1783 			setState(1111);
1784 			_errHandler.sync(this);
1785 			_la = _input.LA(1);
1786 			if (_la==WORK) {
1787 				{
1788 				setState(1110);
1789 				match(WORK);
1790 				}
1791 			}
1792 
1793 			}
1794 		}
1795 		catch (RecognitionException re) {
1796 			_localctx.exception = re;
1797 			_errHandler.reportError(this, re);
1798 			_errHandler.recover(this, re);
1799 		}
1800 		finally {
1801 			exitRule();
1802 		}
1803 		return _localctx;
1804 	}
1805 
1806 	public static class RollbackContext extends ParserRuleContext {
1807 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
1808 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1809 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1810 		public TransactionNameContext transactionName() {
1811 			return getRuleContext(TransactionNameContext.class,0);
1812 		}
1813 		public TransactionVariableNameContext transactionVariableName() {
1814 			return getRuleContext(TransactionVariableNameContext.class,0);
1815 		}
1816 		public SavepointNameContext savepointName() {
1817 			return getRuleContext(SavepointNameContext.class,0);
1818 		}
1819 		public SavepointVariableNameContext savepointVariableName() {
1820 			return getRuleContext(SavepointVariableNameContext.class,0);
1821 		}
1822 		public RollbackContext(ParserRuleContext parent, int invokingState) {
1823 			super(parent, invokingState);
1824 		}
1825 		@Override public int getRuleIndex() { return RULE_rollback; }
1826 		@Override
1827 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1828 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRollback(this);
1829 			else return visitor.visitChildren(this);
1830 		}
1831 	}
1832 
1833 	public final RollbackContext rollback() throws RecognitionException {
1834 		RollbackContext _localctx = new RollbackContext(_ctx, getState());
1835 		enterRule(_localctx, 18, RULE_rollback);
1836 		int _la;
1837 		try {
1838 			enterOuterAlt(_localctx, 1);
1839 			{
1840 			setState(1113);
1841 			match(ROLLBACK);
1842 			setState(1114);
1843 			_la = _input.LA(1);
1844 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1845 			_errHandler.recoverInline(this);
1846 			}
1847 			else {
1848 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1849 				_errHandler.reportMatch(this);
1850 				consume();
1851 			}
1852 			setState(1119);
1853 			_errHandler.sync(this);
1854 			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
1855 			case 1:
1856 				{
1857 				setState(1115);
1858 				transactionName();
1859 				}
1860 				break;
1861 			case 2:
1862 				{
1863 				setState(1116);
1864 				transactionVariableName();
1865 				}
1866 				break;
1867 			case 3:
1868 				{
1869 				setState(1117);
1870 				savepointName();
1871 				}
1872 				break;
1873 			case 4:
1874 				{
1875 				setState(1118);
1876 				savepointVariableName();
1877 				}
1878 				break;
1879 			}
1880 			}
1881 		}
1882 		catch (RecognitionException re) {
1883 			_localctx.exception = re;
1884 			_errHandler.reportError(this, re);
1885 			_errHandler.recover(this, re);
1886 		}
1887 		finally {
1888 			exitRule();
1889 		}
1890 		return _localctx;
1891 	}
1892 
1893 	public static class RollbackWorkContext extends ParserRuleContext {
1894 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
1895 		public TerminalNode WORK() { return getToken(SQLServerStatementParser.WORK, 0); }
1896 		public RollbackWorkContext(ParserRuleContext parent, int invokingState) {
1897 			super(parent, invokingState);
1898 		}
1899 		@Override public int getRuleIndex() { return RULE_rollbackWork; }
1900 		@Override
1901 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1902 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRollbackWork(this);
1903 			else return visitor.visitChildren(this);
1904 		}
1905 	}
1906 
1907 	public final RollbackWorkContext rollbackWork() throws RecognitionException {
1908 		RollbackWorkContext _localctx = new RollbackWorkContext(_ctx, getState());
1909 		enterRule(_localctx, 20, RULE_rollbackWork);
1910 		int _la;
1911 		try {
1912 			enterOuterAlt(_localctx, 1);
1913 			{
1914 			setState(1121);
1915 			match(ROLLBACK);
1916 			setState(1123);
1917 			_errHandler.sync(this);
1918 			_la = _input.LA(1);
1919 			if (_la==WORK) {
1920 				{
1921 				setState(1122);
1922 				match(WORK);
1923 				}
1924 			}
1925 
1926 			}
1927 		}
1928 		catch (RecognitionException re) {
1929 			_localctx.exception = re;
1930 			_errHandler.reportError(this, re);
1931 			_errHandler.recover(this, re);
1932 		}
1933 		finally {
1934 			exitRule();
1935 		}
1936 		return _localctx;
1937 	}
1938 
1939 	public static class SavepointContext extends ParserRuleContext {
1940 		public TerminalNode SAVE() { return getToken(SQLServerStatementParser.SAVE, 0); }
1941 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1942 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1943 		public SavepointNameContext savepointName() {
1944 			return getRuleContext(SavepointNameContext.class,0);
1945 		}
1946 		public SavepointVariableNameContext savepointVariableName() {
1947 			return getRuleContext(SavepointVariableNameContext.class,0);
1948 		}
1949 		public SavepointContext(ParserRuleContext parent, int invokingState) {
1950 			super(parent, invokingState);
1951 		}
1952 		@Override public int getRuleIndex() { return RULE_savepoint; }
1953 		@Override
1954 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1955 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepoint(this);
1956 			else return visitor.visitChildren(this);
1957 		}
1958 	}
1959 
1960 	public final SavepointContext savepoint() throws RecognitionException {
1961 		SavepointContext _localctx = new SavepointContext(_ctx, getState());
1962 		enterRule(_localctx, 22, RULE_savepoint);
1963 		int _la;
1964 		try {
1965 			enterOuterAlt(_localctx, 1);
1966 			{
1967 			setState(1125);
1968 			match(SAVE);
1969 			setState(1126);
1970 			_la = _input.LA(1);
1971 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1972 			_errHandler.recoverInline(this);
1973 			}
1974 			else {
1975 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1976 				_errHandler.reportMatch(this);
1977 				consume();
1978 			}
1979 			setState(1129);
1980 			_errHandler.sync(this);
1981 			switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
1982 			case 1:
1983 				{
1984 				setState(1127);
1985 				savepointName();
1986 				}
1987 				break;
1988 			case 2:
1989 				{
1990 				setState(1128);
1991 				savepointVariableName();
1992 				}
1993 				break;
1994 			}
1995 			}
1996 		}
1997 		catch (RecognitionException re) {
1998 			_localctx.exception = re;
1999 			_errHandler.reportError(this, re);
2000 			_errHandler.recover(this, re);
2001 		}
2002 		finally {
2003 			exitRule();
2004 		}
2005 		return _localctx;
2006 	}
2007 
2008 	public static class ParameterMarkerContext extends ParserRuleContext {
2009 		public TerminalNode QUESTION_() { return getToken(SQLServerStatementParser.QUESTION_, 0); }
2010 		public ParameterMarkerContext(ParserRuleContext parent, int invokingState) {
2011 			super(parent, invokingState);
2012 		}
2013 		@Override public int getRuleIndex() { return RULE_parameterMarker; }
2014 		@Override
2015 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2016 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitParameterMarker(this);
2017 			else return visitor.visitChildren(this);
2018 		}
2019 	}
2020 
2021 	public final ParameterMarkerContext parameterMarker() throws RecognitionException {
2022 		ParameterMarkerContext _localctx = new ParameterMarkerContext(_ctx, getState());
2023 		enterRule(_localctx, 24, RULE_parameterMarker);
2024 		try {
2025 			enterOuterAlt(_localctx, 1);
2026 			{
2027 			setState(1131);
2028 			match(QUESTION_);
2029 			}
2030 		}
2031 		catch (RecognitionException re) {
2032 			_localctx.exception = re;
2033 			_errHandler.reportError(this, re);
2034 			_errHandler.recover(this, re);
2035 		}
2036 		finally {
2037 			exitRule();
2038 		}
2039 		return _localctx;
2040 	}
2041 
2042 	public static class LiteralsContext extends ParserRuleContext {
2043 		public StringLiteralsContext stringLiterals() {
2044 			return getRuleContext(StringLiteralsContext.class,0);
2045 		}
2046 		public NumberLiteralsContext numberLiterals() {
2047 			return getRuleContext(NumberLiteralsContext.class,0);
2048 		}
2049 		public DateTimeLiteralsContext dateTimeLiterals() {
2050 			return getRuleContext(DateTimeLiteralsContext.class,0);
2051 		}
2052 		public HexadecimalLiteralsContext hexadecimalLiterals() {
2053 			return getRuleContext(HexadecimalLiteralsContext.class,0);
2054 		}
2055 		public BitValueLiteralsContext bitValueLiterals() {
2056 			return getRuleContext(BitValueLiteralsContext.class,0);
2057 		}
2058 		public BooleanLiteralsContext booleanLiterals() {
2059 			return getRuleContext(BooleanLiteralsContext.class,0);
2060 		}
2061 		public NullValueLiteralsContext nullValueLiterals() {
2062 			return getRuleContext(NullValueLiteralsContext.class,0);
2063 		}
2064 		public LiteralsContext(ParserRuleContext parent, int invokingState) {
2065 			super(parent, invokingState);
2066 		}
2067 		@Override public int getRuleIndex() { return RULE_literals; }
2068 		@Override
2069 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2070 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLiterals(this);
2071 			else return visitor.visitChildren(this);
2072 		}
2073 	}
2074 
2075 	public final LiteralsContext literals() throws RecognitionException {
2076 		LiteralsContext _localctx = new LiteralsContext(_ctx, getState());
2077 		enterRule(_localctx, 26, RULE_literals);
2078 		try {
2079 			setState(1140);
2080 			_errHandler.sync(this);
2081 			switch (_input.LA(1)) {
2082 			case STRING_:
2083 			case NCHAR_TEXT:
2084 				enterOuterAlt(_localctx, 1);
2085 				{
2086 				setState(1133);
2087 				stringLiterals();
2088 				}
2089 				break;
2090 			case PLUS_:
2091 			case MINUS_:
2092 			case NUMBER_:
2093 				enterOuterAlt(_localctx, 2);
2094 				{
2095 				setState(1134);
2096 				numberLiterals();
2097 				}
2098 				break;
2099 			case LBE_:
2100 			case DATE:
2101 			case TIME:
2102 			case TIMESTAMP:
2103 				enterOuterAlt(_localctx, 3);
2104 				{
2105 				setState(1135);
2106 				dateTimeLiterals();
2107 				}
2108 				break;
2109 			case HEX_DIGIT_:
2110 				enterOuterAlt(_localctx, 4);
2111 				{
2112 				setState(1136);
2113 				hexadecimalLiterals();
2114 				}
2115 				break;
2116 			case BIT_NUM_:
2117 				enterOuterAlt(_localctx, 5);
2118 				{
2119 				setState(1137);
2120 				bitValueLiterals();
2121 				}
2122 				break;
2123 			case TRUE:
2124 			case FALSE:
2125 				enterOuterAlt(_localctx, 6);
2126 				{
2127 				setState(1138);
2128 				booleanLiterals();
2129 				}
2130 				break;
2131 			case NULL:
2132 				enterOuterAlt(_localctx, 7);
2133 				{
2134 				setState(1139);
2135 				nullValueLiterals();
2136 				}
2137 				break;
2138 			default:
2139 				throw new NoViableAltException(this);
2140 			}
2141 		}
2142 		catch (RecognitionException re) {
2143 			_localctx.exception = re;
2144 			_errHandler.reportError(this, re);
2145 			_errHandler.recover(this, re);
2146 		}
2147 		finally {
2148 			exitRule();
2149 		}
2150 		return _localctx;
2151 	}
2152 
2153 	public static class StringLiteralsContext extends ParserRuleContext {
2154 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
2155 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
2156 		public StringLiteralsContext(ParserRuleContext parent, int invokingState) {
2157 			super(parent, invokingState);
2158 		}
2159 		@Override public int getRuleIndex() { return RULE_stringLiterals; }
2160 		@Override
2161 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2162 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStringLiterals(this);
2163 			else return visitor.visitChildren(this);
2164 		}
2165 	}
2166 
2167 	public final StringLiteralsContext stringLiterals() throws RecognitionException {
2168 		StringLiteralsContext _localctx = new StringLiteralsContext(_ctx, getState());
2169 		enterRule(_localctx, 28, RULE_stringLiterals);
2170 		int _la;
2171 		try {
2172 			enterOuterAlt(_localctx, 1);
2173 			{
2174 			setState(1142);
2175 			_la = _input.LA(1);
2176 			if ( !(_la==STRING_ || _la==NCHAR_TEXT) ) {
2177 			_errHandler.recoverInline(this);
2178 			}
2179 			else {
2180 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2181 				_errHandler.reportMatch(this);
2182 				consume();
2183 			}
2184 			}
2185 		}
2186 		catch (RecognitionException re) {
2187 			_localctx.exception = re;
2188 			_errHandler.reportError(this, re);
2189 			_errHandler.recover(this, re);
2190 		}
2191 		finally {
2192 			exitRule();
2193 		}
2194 		return _localctx;
2195 	}
2196 
2197 	public static class NumberLiteralsContext extends ParserRuleContext {
2198 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
2199 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
2200 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
2201 		public NumberLiteralsContext(ParserRuleContext parent, int invokingState) {
2202 			super(parent, invokingState);
2203 		}
2204 		@Override public int getRuleIndex() { return RULE_numberLiterals; }
2205 		@Override
2206 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2207 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNumberLiterals(this);
2208 			else return visitor.visitChildren(this);
2209 		}
2210 	}
2211 
2212 	public final NumberLiteralsContext numberLiterals() throws RecognitionException {
2213 		NumberLiteralsContext _localctx = new NumberLiteralsContext(_ctx, getState());
2214 		enterRule(_localctx, 30, RULE_numberLiterals);
2215 		int _la;
2216 		try {
2217 			enterOuterAlt(_localctx, 1);
2218 			{
2219 			setState(1145);
2220 			_errHandler.sync(this);
2221 			_la = _input.LA(1);
2222 			if (_la==PLUS_ || _la==MINUS_) {
2223 				{
2224 				setState(1144);
2225 				_la = _input.LA(1);
2226 				if ( !(_la==PLUS_ || _la==MINUS_) ) {
2227 				_errHandler.recoverInline(this);
2228 				}
2229 				else {
2230 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2231 					_errHandler.reportMatch(this);
2232 					consume();
2233 				}
2234 				}
2235 			}
2236 
2237 			setState(1147);
2238 			match(NUMBER_);
2239 			}
2240 		}
2241 		catch (RecognitionException re) {
2242 			_localctx.exception = re;
2243 			_errHandler.reportError(this, re);
2244 			_errHandler.recover(this, re);
2245 		}
2246 		finally {
2247 			exitRule();
2248 		}
2249 		return _localctx;
2250 	}
2251 
2252 	public static class DateTimeLiteralsContext extends ParserRuleContext {
2253 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
2254 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
2255 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
2256 		public TerminalNode TIMESTAMP() { return getToken(SQLServerStatementParser.TIMESTAMP, 0); }
2257 		public TerminalNode LBE_() { return getToken(SQLServerStatementParser.LBE_, 0); }
2258 		public IdentifierContext identifier() {
2259 			return getRuleContext(IdentifierContext.class,0);
2260 		}
2261 		public TerminalNode RBE_() { return getToken(SQLServerStatementParser.RBE_, 0); }
2262 		public DateTimeLiteralsContext(ParserRuleContext parent, int invokingState) {
2263 			super(parent, invokingState);
2264 		}
2265 		@Override public int getRuleIndex() { return RULE_dateTimeLiterals; }
2266 		@Override
2267 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2268 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDateTimeLiterals(this);
2269 			else return visitor.visitChildren(this);
2270 		}
2271 	}
2272 
2273 	public final DateTimeLiteralsContext dateTimeLiterals() throws RecognitionException {
2274 		DateTimeLiteralsContext _localctx = new DateTimeLiteralsContext(_ctx, getState());
2275 		enterRule(_localctx, 32, RULE_dateTimeLiterals);
2276 		int _la;
2277 		try {
2278 			setState(1156);
2279 			_errHandler.sync(this);
2280 			switch (_input.LA(1)) {
2281 			case DATE:
2282 			case TIME:
2283 			case TIMESTAMP:
2284 				enterOuterAlt(_localctx, 1);
2285 				{
2286 				setState(1149);
2287 				_la = _input.LA(1);
2288 				if ( !(((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (DATE - 135)) | (1L << (TIME - 135)) | (1L << (TIMESTAMP - 135)))) != 0)) ) {
2289 				_errHandler.recoverInline(this);
2290 				}
2291 				else {
2292 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2293 					_errHandler.reportMatch(this);
2294 					consume();
2295 				}
2296 				setState(1150);
2297 				match(STRING_);
2298 				}
2299 				break;
2300 			case LBE_:
2301 				enterOuterAlt(_localctx, 2);
2302 				{
2303 				setState(1151);
2304 				match(LBE_);
2305 				setState(1152);
2306 				identifier();
2307 				setState(1153);
2308 				match(STRING_);
2309 				setState(1154);
2310 				match(RBE_);
2311 				}
2312 				break;
2313 			default:
2314 				throw new NoViableAltException(this);
2315 			}
2316 		}
2317 		catch (RecognitionException re) {
2318 			_localctx.exception = re;
2319 			_errHandler.reportError(this, re);
2320 			_errHandler.recover(this, re);
2321 		}
2322 		finally {
2323 			exitRule();
2324 		}
2325 		return _localctx;
2326 	}
2327 
2328 	public static class HexadecimalLiteralsContext extends ParserRuleContext {
2329 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
2330 		public HexadecimalLiteralsContext(ParserRuleContext parent, int invokingState) {
2331 			super(parent, invokingState);
2332 		}
2333 		@Override public int getRuleIndex() { return RULE_hexadecimalLiterals; }
2334 		@Override
2335 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2336 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHexadecimalLiterals(this);
2337 			else return visitor.visitChildren(this);
2338 		}
2339 	}
2340 
2341 	public final HexadecimalLiteralsContext hexadecimalLiterals() throws RecognitionException {
2342 		HexadecimalLiteralsContext _localctx = new HexadecimalLiteralsContext(_ctx, getState());
2343 		enterRule(_localctx, 34, RULE_hexadecimalLiterals);
2344 		try {
2345 			enterOuterAlt(_localctx, 1);
2346 			{
2347 			setState(1158);
2348 			match(HEX_DIGIT_);
2349 			}
2350 		}
2351 		catch (RecognitionException re) {
2352 			_localctx.exception = re;
2353 			_errHandler.reportError(this, re);
2354 			_errHandler.recover(this, re);
2355 		}
2356 		finally {
2357 			exitRule();
2358 		}
2359 		return _localctx;
2360 	}
2361 
2362 	public static class BitValueLiteralsContext extends ParserRuleContext {
2363 		public TerminalNode BIT_NUM_() { return getToken(SQLServerStatementParser.BIT_NUM_, 0); }
2364 		public BitValueLiteralsContext(ParserRuleContext parent, int invokingState) {
2365 			super(parent, invokingState);
2366 		}
2367 		@Override public int getRuleIndex() { return RULE_bitValueLiterals; }
2368 		@Override
2369 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2370 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBitValueLiterals(this);
2371 			else return visitor.visitChildren(this);
2372 		}
2373 	}
2374 
2375 	public final BitValueLiteralsContext bitValueLiterals() throws RecognitionException {
2376 		BitValueLiteralsContext _localctx = new BitValueLiteralsContext(_ctx, getState());
2377 		enterRule(_localctx, 36, RULE_bitValueLiterals);
2378 		try {
2379 			enterOuterAlt(_localctx, 1);
2380 			{
2381 			setState(1160);
2382 			match(BIT_NUM_);
2383 			}
2384 		}
2385 		catch (RecognitionException re) {
2386 			_localctx.exception = re;
2387 			_errHandler.reportError(this, re);
2388 			_errHandler.recover(this, re);
2389 		}
2390 		finally {
2391 			exitRule();
2392 		}
2393 		return _localctx;
2394 	}
2395 
2396 	public static class BooleanLiteralsContext extends ParserRuleContext {
2397 		public TerminalNode TRUE() { return getToken(SQLServerStatementParser.TRUE, 0); }
2398 		public TerminalNode FALSE() { return getToken(SQLServerStatementParser.FALSE, 0); }
2399 		public BooleanLiteralsContext(ParserRuleContext parent, int invokingState) {
2400 			super(parent, invokingState);
2401 		}
2402 		@Override public int getRuleIndex() { return RULE_booleanLiterals; }
2403 		@Override
2404 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2405 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBooleanLiterals(this);
2406 			else return visitor.visitChildren(this);
2407 		}
2408 	}
2409 
2410 	public final BooleanLiteralsContext booleanLiterals() throws RecognitionException {
2411 		BooleanLiteralsContext _localctx = new BooleanLiteralsContext(_ctx, getState());
2412 		enterRule(_localctx, 38, RULE_booleanLiterals);
2413 		int _la;
2414 		try {
2415 			enterOuterAlt(_localctx, 1);
2416 			{
2417 			setState(1162);
2418 			_la = _input.LA(1);
2419 			if ( !(_la==TRUE || _la==FALSE) ) {
2420 			_errHandler.recoverInline(this);
2421 			}
2422 			else {
2423 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2424 				_errHandler.reportMatch(this);
2425 				consume();
2426 			}
2427 			}
2428 		}
2429 		catch (RecognitionException re) {
2430 			_localctx.exception = re;
2431 			_errHandler.reportError(this, re);
2432 			_errHandler.recover(this, re);
2433 		}
2434 		finally {
2435 			exitRule();
2436 		}
2437 		return _localctx;
2438 	}
2439 
2440 	public static class NullValueLiteralsContext extends ParserRuleContext {
2441 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
2442 		public NullValueLiteralsContext(ParserRuleContext parent, int invokingState) {
2443 			super(parent, invokingState);
2444 		}
2445 		@Override public int getRuleIndex() { return RULE_nullValueLiterals; }
2446 		@Override
2447 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2448 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNullValueLiterals(this);
2449 			else return visitor.visitChildren(this);
2450 		}
2451 	}
2452 
2453 	public final NullValueLiteralsContext nullValueLiterals() throws RecognitionException {
2454 		NullValueLiteralsContext _localctx = new NullValueLiteralsContext(_ctx, getState());
2455 		enterRule(_localctx, 40, RULE_nullValueLiterals);
2456 		try {
2457 			enterOuterAlt(_localctx, 1);
2458 			{
2459 			setState(1164);
2460 			match(NULL);
2461 			}
2462 		}
2463 		catch (RecognitionException re) {
2464 			_localctx.exception = re;
2465 			_errHandler.reportError(this, re);
2466 			_errHandler.recover(this, re);
2467 		}
2468 		finally {
2469 			exitRule();
2470 		}
2471 		return _localctx;
2472 	}
2473 
2474 	public static class IdentifierContext extends ParserRuleContext {
2475 		public RegularIdentifierContext regularIdentifier() {
2476 			return getRuleContext(RegularIdentifierContext.class,0);
2477 		}
2478 		public DelimitedIdentifierContext delimitedIdentifier() {
2479 			return getRuleContext(DelimitedIdentifierContext.class,0);
2480 		}
2481 		public IdentifierContext(ParserRuleContext parent, int invokingState) {
2482 			super(parent, invokingState);
2483 		}
2484 		@Override public int getRuleIndex() { return RULE_identifier; }
2485 		@Override
2486 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2487 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIdentifier(this);
2488 			else return visitor.visitChildren(this);
2489 		}
2490 	}
2491 
2492 	public final IdentifierContext identifier() throws RecognitionException {
2493 		IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
2494 		enterRule(_localctx, 42, RULE_identifier);
2495 		try {
2496 			setState(1168);
2497 			_errHandler.sync(this);
2498 			switch (_input.LA(1)) {
2499 			case TRUNCATE:
2500 			case SCHEMA:
2501 			case COLUMNS:
2502 			case PRECISION:
2503 			case FUNCTION:
2504 			case TRIGGER:
2505 			case CAST:
2506 			case SUBSTRING:
2507 			case OFF:
2508 			case GROUP:
2509 			case LIMIT:
2510 			case OFFSET:
2511 			case SAVEPOINT:
2512 			case BOOLEAN:
2513 			case ARRAY:
2514 			case DATE:
2515 			case LOCALTIME:
2516 			case LOCALTIMESTAMP:
2517 			case QUARTER:
2518 			case MONTH:
2519 			case WEEK:
2520 			case DAY:
2521 			case SECOND:
2522 			case MICROSECOND:
2523 			case MAX:
2524 			case MIN:
2525 			case SUM:
2526 			case COUNT:
2527 			case AVG:
2528 			case ENABLE:
2529 			case DISABLE:
2530 			case INSTANCE:
2531 			case DO:
2532 			case DEFINER:
2533 			case SQL:
2534 			case CASCADED:
2535 			case LOCAL:
2536 			case NEXT:
2537 			case NAME:
2538 			case INTEGER:
2539 			case TYPE:
2540 			case TEXT:
2541 			case VIEWS:
2542 			case READ_ONLY:
2543 			case DATABASE:
2544 			case RETURNS:
2545 			case DATEPART:
2546 			case PASSWORD:
2547 			case BINARY:
2548 			case HIDDEN_:
2549 			case MOD:
2550 			case PARTITION:
2551 			case PARTITIONS:
2552 			case TOP:
2553 			case ROW:
2554 			case ROWS:
2555 			case XOR:
2556 			case ALWAYS:
2557 			case ROLE:
2558 			case START:
2559 			case ALGORITHM:
2560 			case AUTO:
2561 			case BLOCKERS:
2562 			case CLUSTERED:
2563 			case NONCLUSTERED:
2564 			case COLUMNSTORE:
2565 			case CONTENT:
2566 			case YEARS:
2567 			case MONTHS:
2568 			case WEEKS:
2569 			case DAYS:
2570 			case MINUTES:
2571 			case DENY:
2572 			case DETERMINISTIC:
2573 			case DISTRIBUTION:
2574 			case DOCUMENT:
2575 			case DURABILITY:
2576 			case ENCRYPTED:
2577 			case FILESTREAM:
2578 			case FILETABLE:
2579 			case FILLFACTOR:
2580 			case FOLLOWING:
2581 			case HASH:
2582 			case HEAP:
2583 			case INBOUND:
2584 			case OUTBOUND:
2585 			case UNBOUNDED:
2586 			case INFINITE:
2587 			case LOGIN:
2588 			case MASKED:
2589 			case MAXDOP:
2590 			case MOVE:
2591 			case NOCHECK:
2592 			case OBJECT:
2593 			case ONLINE:
2594 			case OVER:
2595 			case PAGE:
2596 			case PAUSED:
2597 			case PERIOD:
2598 			case PERSISTED:
2599 			case PRECEDING:
2600 			case RANDOMIZED:
2601 			case RANGE:
2602 			case REBUILD:
2603 			case REPLICATE:
2604 			case REPLICATION:
2605 			case RESUMABLE:
2606 			case ROWGUIDCOL:
2607 			case SAVE:
2608 			case SELF:
2609 			case SPARSE:
2610 			case SWITCH:
2611 			case TRAN:
2612 			case TRANCOUNT:
2613 			case CONTROL:
2614 			case CONCAT:
2615 			case TAKE:
2616 			case OWNERSHIP:
2617 			case DEFINITION:
2618 			case APPLICATION:
2619 			case ASSEMBLY:
2620 			case SYMMETRIC:
2621 			case ASYMMETRIC:
2622 			case SERVER:
2623 			case RECEIVE:
2624 			case CHANGE:
2625 			case TRACE:
2626 			case TRACKING:
2627 			case RESOURCES:
2628 			case SETTINGS:
2629 			case STATE:
2630 			case AVAILABILITY:
2631 			case CREDENTIAL:
2632 			case ENDPOINT:
2633 			case EVENT:
2634 			case NOTIFICATION:
2635 			case LINKED:
2636 			case AUDIT:
2637 			case DDL:
2638 			case XML:
2639 			case IMPERSONATE:
2640 			case SECURABLES:
2641 			case AUTHENTICATE:
2642 			case EXTERNAL:
2643 			case ACCESS:
2644 			case ADMINISTER:
2645 			case BULK:
2646 			case OPERATIONS:
2647 			case UNSAFE:
2648 			case SHUTDOWN:
2649 			case SCOPED:
2650 			case CONFIGURATION:
2651 			case DATASPACE:
2652 			case SERVICE:
2653 			case CERTIFICATE:
2654 			case CONTRACT:
2655 			case ENCRYPTION:
2656 			case MASTER:
2657 			case DATA:
2658 			case SOURCE:
2659 			case FILE:
2660 			case FORMAT:
2661 			case LIBRARY:
2662 			case FULLTEXT:
2663 			case MASK:
2664 			case UNMASK:
2665 			case MESSAGE:
2666 			case REMOTE:
2667 			case BINDING:
2668 			case ROUTE:
2669 			case SECURITY:
2670 			case POLICY:
2671 			case AGGREGATE:
2672 			case QUEUE:
2673 			case RULE:
2674 			case SYNONYM:
2675 			case COLLECTION:
2676 			case SCRIPT:
2677 			case KILL:
2678 			case BACKUP:
2679 			case LOG:
2680 			case SHOWPLAN:
2681 			case SUBSCRIBE:
2682 			case QUERY:
2683 			case NOTIFICATIONS:
2684 			case CHECKPOINT:
2685 			case SEQUENCE:
2686 			case ABORT_AFTER_WAIT:
2687 			case ALLOW_PAGE_LOCKS:
2688 			case ALLOW_ROW_LOCKS:
2689 			case ALL_SPARSE_COLUMNS:
2690 			case BUCKET_COUNT:
2691 			case COLUMNSTORE_ARCHIVE:
2692 			case COLUMN_ENCRYPTION_KEY:
2693 			case COLUMN_SET:
2694 			case COMPRESSION_DELAY:
2695 			case DATABASE_DEAULT:
2696 			case DATA_COMPRESSION:
2697 			case DATA_CONSISTENCY_CHECK:
2698 			case ENCRYPTION_TYPE:
2699 			case SYSTEM_TIME:
2700 			case SYSTEM_VERSIONING:
2701 			case TEXTIMAGE_ON:
2702 			case WAIT_AT_LOW_PRIORITY:
2703 			case STATISTICS_INCREMENTAL:
2704 			case STATISTICS_NORECOMPUTE:
2705 			case ROUND_ROBIN:
2706 			case SCHEMA_AND_DATA:
2707 			case SCHEMA_ONLY:
2708 			case SORT_IN_TEMPDB:
2709 			case IGNORE_DUP_KEY:
2710 			case IMPLICIT_TRANSACTIONS:
2711 			case MAX_DURATION:
2712 			case MEMORY_OPTIMIZED:
2713 			case MIGRATION_STATE:
2714 			case PAD_INDEX:
2715 			case REMOTE_DATA_ARCHIVE:
2716 			case FILESTREAM_ON:
2717 			case FILETABLE_COLLATE_FILENAME:
2718 			case FILETABLE_DIRECTORY:
2719 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
2720 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
2721 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
2722 			case FILTER_PREDICATE:
2723 			case HISTORY_RETENTION_PERIOD:
2724 			case HISTORY_TABLE:
2725 			case LOCK_ESCALATION:
2726 			case DROP_EXISTING:
2727 			case ROW_NUMBER:
2728 			case FIRST:
2729 			case DATETIME2:
2730 			case OUTPUT:
2731 			case INSERTED:
2732 			case DELETED:
2733 			case FILENAME:
2734 			case SIZE:
2735 			case MAXSIZE:
2736 			case FILEGROWTH:
2737 			case UNLIMITED:
2738 			case KB:
2739 			case MB:
2740 			case GB:
2741 			case TB:
2742 			case CONTAINS:
2743 			case MEMORY_OPTIMIZED_DATA:
2744 			case FILEGROUP:
2745 			case NON_TRANSACTED_ACCESS:
2746 			case DB_CHAINING:
2747 			case TRUSTWORTHY:
2748 			case FORWARD_ONLY:
2749 			case KEYSET:
2750 			case FAST_FORWARD:
2751 			case SCROLL_LOCKS:
2752 			case OPTIMISTIC:
2753 			case TYPE_WARNING:
2754 			case SCHEMABINDING:
2755 			case CALLER:
2756 			case OWNER:
2757 			case SNAPSHOT:
2758 			case REPEATABLE:
2759 			case SERIALIZABLE:
2760 			case NATIVE_COMPILATION:
2761 			case VIEW_METADATA:
2762 			case INSTEAD:
2763 			case APPEND:
2764 			case INCREMENT:
2765 			case CACHE:
2766 			case MINVALUE:
2767 			case MAXVALUE:
2768 			case RESTART:
2769 			case LOB_COMPACTION:
2770 			case COMPRESS_ALL_ROW_GROUPS:
2771 			case REORGANIZE:
2772 			case RESUME:
2773 			case PAUSE:
2774 			case ABORT:
2775 			case ACCELERATED_DATABASE_RECOVERY:
2776 			case PERSISTENT_VERSION_STORE_FILEGROUP:
2777 			case IMMEDIATE:
2778 			case NO_WAIT:
2779 			case TARGET_RECOVERY_TIME:
2780 			case SECONDS:
2781 			case HONOR_BROKER_PRIORITY:
2782 			case ERROR_BROKER_CONVERSATIONS:
2783 			case NEW_BROKER:
2784 			case DISABLE_BROKER:
2785 			case ENABLE_BROKER:
2786 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
2787 			case READ_COMMITTED_SNAPSHOT:
2788 			case ALLOW_SNAPSHOT_ISOLATION:
2789 			case RECURSIVE_TRIGGERS:
2790 			case QUOTED_IDENTIFIER:
2791 			case NUMERIC_ROUNDABORT:
2792 			case CONCAT_NULL_YIELDS_NULL:
2793 			case COMPATIBILITY_LEVEL:
2794 			case ARITHABORT:
2795 			case ANSI_WARNINGS:
2796 			case ANSI_PADDING:
2797 			case ANSI_NULLS:
2798 			case ANSI_NULL_DEFAULT:
2799 			case PAGE_VERIFY:
2800 			case CHECKSUM:
2801 			case TORN_PAGE_DETECTION:
2802 			case BULK_LOGGED:
2803 			case RECOVERY:
2804 			case TOTAL_EXECUTION_CPU_TIME_MS:
2805 			case TOTAL_COMPILE_CPU_TIME_MS:
2806 			case STALE_CAPTURE_POLICY_THRESHOLD:
2807 			case EXECUTION_COUNT:
2808 			case QUERY_CAPTURE_POLICY:
2809 			case WAIT_STATS_CAPTURE_MODE:
2810 			case MAX_PLANS_PER_QUERY:
2811 			case QUERY_CAPTURE_MODE:
2812 			case SIZE_BASED_CLEANUP_MODE:
2813 			case INTERVAL_LENGTH_MINUTES:
2814 			case MAX_STORAGE_SIZE_MB:
2815 			case DATA_FLUSH_INTERVAL_SECONDS:
2816 			case CLEANUP_POLICY:
2817 			case CUSTOM:
2818 			case STALE_QUERY_THRESHOLD_DAYS:
2819 			case OPERATION_MODE:
2820 			case QUERY_STORE:
2821 			case CURSOR_DEFAULT:
2822 			case GLOBAL:
2823 			case CURSOR_CLOSE_ON_COMMIT:
2824 			case HOURS:
2825 			case CHANGE_RETENTION:
2826 			case AUTO_CLEANUP:
2827 			case CHANGE_TRACKING:
2828 			case AUTOMATIC_TUNING:
2829 			case FORCE_LAST_GOOD_PLAN:
2830 			case AUTO_UPDATE_STATISTICS_ASYNC:
2831 			case AUTO_UPDATE_STATISTICS:
2832 			case AUTO_SHRINK:
2833 			case AUTO_CREATE_STATISTICS:
2834 			case INCREMENTAL:
2835 			case AUTO_CLOSE:
2836 			case DATA_RETENTION:
2837 			case TEMPORAL_HISTORY_RETENTION:
2838 			case EDITION:
2839 			case MIXED_PAGE_ALLOCATION:
2840 			case DISABLED:
2841 			case ALLOWED:
2842 			case HADR:
2843 			case MULTI_USER:
2844 			case RESTRICTED_USER:
2845 			case SINGLE_USER:
2846 			case OFFLINE:
2847 			case EMERGENCY:
2848 			case SUSPEND:
2849 			case DATE_CORRELATION_OPTIMIZATION:
2850 			case ELASTIC_POOL:
2851 			case SERVICE_OBJECTIVE:
2852 			case DATABASE_NAME:
2853 			case ALLOW_CONNECTIONS:
2854 			case GEO:
2855 			case NAMED:
2856 			case DATEFIRST:
2857 			case BACKUP_STORAGE_REDUNDANCY:
2858 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
2859 			case SECONDARY:
2860 			case FAILOVER:
2861 			case DEFAULT_FULLTEXT_LANGUAGE:
2862 			case DEFAULT_LANGUAGE:
2863 			case INLINE:
2864 			case NESTED_TRIGGERS:
2865 			case TRANSFORM_NOISE_WORDS:
2866 			case TWO_DIGIT_YEAR_CUTOFF:
2867 			case PERSISTENT_LOG_BUFFER:
2868 			case DIRECTORY_NAME:
2869 			case DATEFORMAT:
2870 			case DELAYED_DURABILITY:
2871 			case AUTHORIZATION:
2872 			case TRANSFER:
2873 			case PROVIDER:
2874 			case SEARCH:
2875 			case MEMBER:
2876 			case IDENTIFIER_:
2877 				enterOuterAlt(_localctx, 1);
2878 				{
2879 				setState(1166);
2880 				regularIdentifier();
2881 				}
2882 				break;
2883 			case DELIMITED_IDENTIFIER_:
2884 				enterOuterAlt(_localctx, 2);
2885 				{
2886 				setState(1167);
2887 				delimitedIdentifier();
2888 				}
2889 				break;
2890 			default:
2891 				throw new NoViableAltException(this);
2892 			}
2893 		}
2894 		catch (RecognitionException re) {
2895 			_localctx.exception = re;
2896 			_errHandler.reportError(this, re);
2897 			_errHandler.recover(this, re);
2898 		}
2899 		finally {
2900 			exitRule();
2901 		}
2902 		return _localctx;
2903 	}
2904 
2905 	public static class RegularIdentifierContext extends ParserRuleContext {
2906 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
2907 		public UnreservedWordContext unreservedWord() {
2908 			return getRuleContext(UnreservedWordContext.class,0);
2909 		}
2910 		public RegularIdentifierContext(ParserRuleContext parent, int invokingState) {
2911 			super(parent, invokingState);
2912 		}
2913 		@Override public int getRuleIndex() { return RULE_regularIdentifier; }
2914 		@Override
2915 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2916 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularIdentifier(this);
2917 			else return visitor.visitChildren(this);
2918 		}
2919 	}
2920 
2921 	public final RegularIdentifierContext regularIdentifier() throws RecognitionException {
2922 		RegularIdentifierContext _localctx = new RegularIdentifierContext(_ctx, getState());
2923 		enterRule(_localctx, 44, RULE_regularIdentifier);
2924 		try {
2925 			setState(1172);
2926 			_errHandler.sync(this);
2927 			switch (_input.LA(1)) {
2928 			case IDENTIFIER_:
2929 				enterOuterAlt(_localctx, 1);
2930 				{
2931 				setState(1170);
2932 				match(IDENTIFIER_);
2933 				}
2934 				break;
2935 			case TRUNCATE:
2936 			case SCHEMA:
2937 			case COLUMNS:
2938 			case PRECISION:
2939 			case FUNCTION:
2940 			case TRIGGER:
2941 			case CAST:
2942 			case SUBSTRING:
2943 			case OFF:
2944 			case GROUP:
2945 			case LIMIT:
2946 			case OFFSET:
2947 			case SAVEPOINT:
2948 			case BOOLEAN:
2949 			case ARRAY:
2950 			case DATE:
2951 			case LOCALTIME:
2952 			case LOCALTIMESTAMP:
2953 			case QUARTER:
2954 			case MONTH:
2955 			case WEEK:
2956 			case DAY:
2957 			case SECOND:
2958 			case MICROSECOND:
2959 			case MAX:
2960 			case MIN:
2961 			case SUM:
2962 			case COUNT:
2963 			case AVG:
2964 			case ENABLE:
2965 			case DISABLE:
2966 			case INSTANCE:
2967 			case DO:
2968 			case DEFINER:
2969 			case SQL:
2970 			case CASCADED:
2971 			case LOCAL:
2972 			case NEXT:
2973 			case NAME:
2974 			case INTEGER:
2975 			case TYPE:
2976 			case TEXT:
2977 			case VIEWS:
2978 			case READ_ONLY:
2979 			case DATABASE:
2980 			case RETURNS:
2981 			case DATEPART:
2982 			case PASSWORD:
2983 			case BINARY:
2984 			case HIDDEN_:
2985 			case MOD:
2986 			case PARTITION:
2987 			case PARTITIONS:
2988 			case TOP:
2989 			case ROW:
2990 			case ROWS:
2991 			case XOR:
2992 			case ALWAYS:
2993 			case ROLE:
2994 			case START:
2995 			case ALGORITHM:
2996 			case AUTO:
2997 			case BLOCKERS:
2998 			case CLUSTERED:
2999 			case NONCLUSTERED:
3000 			case COLUMNSTORE:
3001 			case CONTENT:
3002 			case YEARS:
3003 			case MONTHS:
3004 			case WEEKS:
3005 			case DAYS:
3006 			case MINUTES:
3007 			case DENY:
3008 			case DETERMINISTIC:
3009 			case DISTRIBUTION:
3010 			case DOCUMENT:
3011 			case DURABILITY:
3012 			case ENCRYPTED:
3013 			case FILESTREAM:
3014 			case FILETABLE:
3015 			case FILLFACTOR:
3016 			case FOLLOWING:
3017 			case HASH:
3018 			case HEAP:
3019 			case INBOUND:
3020 			case OUTBOUND:
3021 			case UNBOUNDED:
3022 			case INFINITE:
3023 			case LOGIN:
3024 			case MASKED:
3025 			case MAXDOP:
3026 			case MOVE:
3027 			case NOCHECK:
3028 			case OBJECT:
3029 			case ONLINE:
3030 			case OVER:
3031 			case PAGE:
3032 			case PAUSED:
3033 			case PERIOD:
3034 			case PERSISTED:
3035 			case PRECEDING:
3036 			case RANDOMIZED:
3037 			case RANGE:
3038 			case REBUILD:
3039 			case REPLICATE:
3040 			case REPLICATION:
3041 			case RESUMABLE:
3042 			case ROWGUIDCOL:
3043 			case SAVE:
3044 			case SELF:
3045 			case SPARSE:
3046 			case SWITCH:
3047 			case TRAN:
3048 			case TRANCOUNT:
3049 			case CONTROL:
3050 			case CONCAT:
3051 			case TAKE:
3052 			case OWNERSHIP:
3053 			case DEFINITION:
3054 			case APPLICATION:
3055 			case ASSEMBLY:
3056 			case SYMMETRIC:
3057 			case ASYMMETRIC:
3058 			case SERVER:
3059 			case RECEIVE:
3060 			case CHANGE:
3061 			case TRACE:
3062 			case TRACKING:
3063 			case RESOURCES:
3064 			case SETTINGS:
3065 			case STATE:
3066 			case AVAILABILITY:
3067 			case CREDENTIAL:
3068 			case ENDPOINT:
3069 			case EVENT:
3070 			case NOTIFICATION:
3071 			case LINKED:
3072 			case AUDIT:
3073 			case DDL:
3074 			case XML:
3075 			case IMPERSONATE:
3076 			case SECURABLES:
3077 			case AUTHENTICATE:
3078 			case EXTERNAL:
3079 			case ACCESS:
3080 			case ADMINISTER:
3081 			case BULK:
3082 			case OPERATIONS:
3083 			case UNSAFE:
3084 			case SHUTDOWN:
3085 			case SCOPED:
3086 			case CONFIGURATION:
3087 			case DATASPACE:
3088 			case SERVICE:
3089 			case CERTIFICATE:
3090 			case CONTRACT:
3091 			case ENCRYPTION:
3092 			case MASTER:
3093 			case DATA:
3094 			case SOURCE:
3095 			case FILE:
3096 			case FORMAT:
3097 			case LIBRARY:
3098 			case FULLTEXT:
3099 			case MASK:
3100 			case UNMASK:
3101 			case MESSAGE:
3102 			case REMOTE:
3103 			case BINDING:
3104 			case ROUTE:
3105 			case SECURITY:
3106 			case POLICY:
3107 			case AGGREGATE:
3108 			case QUEUE:
3109 			case RULE:
3110 			case SYNONYM:
3111 			case COLLECTION:
3112 			case SCRIPT:
3113 			case KILL:
3114 			case BACKUP:
3115 			case LOG:
3116 			case SHOWPLAN:
3117 			case SUBSCRIBE:
3118 			case QUERY:
3119 			case NOTIFICATIONS:
3120 			case CHECKPOINT:
3121 			case SEQUENCE:
3122 			case ABORT_AFTER_WAIT:
3123 			case ALLOW_PAGE_LOCKS:
3124 			case ALLOW_ROW_LOCKS:
3125 			case ALL_SPARSE_COLUMNS:
3126 			case BUCKET_COUNT:
3127 			case COLUMNSTORE_ARCHIVE:
3128 			case COLUMN_ENCRYPTION_KEY:
3129 			case COLUMN_SET:
3130 			case COMPRESSION_DELAY:
3131 			case DATABASE_DEAULT:
3132 			case DATA_COMPRESSION:
3133 			case DATA_CONSISTENCY_CHECK:
3134 			case ENCRYPTION_TYPE:
3135 			case SYSTEM_TIME:
3136 			case SYSTEM_VERSIONING:
3137 			case TEXTIMAGE_ON:
3138 			case WAIT_AT_LOW_PRIORITY:
3139 			case STATISTICS_INCREMENTAL:
3140 			case STATISTICS_NORECOMPUTE:
3141 			case ROUND_ROBIN:
3142 			case SCHEMA_AND_DATA:
3143 			case SCHEMA_ONLY:
3144 			case SORT_IN_TEMPDB:
3145 			case IGNORE_DUP_KEY:
3146 			case IMPLICIT_TRANSACTIONS:
3147 			case MAX_DURATION:
3148 			case MEMORY_OPTIMIZED:
3149 			case MIGRATION_STATE:
3150 			case PAD_INDEX:
3151 			case REMOTE_DATA_ARCHIVE:
3152 			case FILESTREAM_ON:
3153 			case FILETABLE_COLLATE_FILENAME:
3154 			case FILETABLE_DIRECTORY:
3155 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
3156 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
3157 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
3158 			case FILTER_PREDICATE:
3159 			case HISTORY_RETENTION_PERIOD:
3160 			case HISTORY_TABLE:
3161 			case LOCK_ESCALATION:
3162 			case DROP_EXISTING:
3163 			case ROW_NUMBER:
3164 			case FIRST:
3165 			case DATETIME2:
3166 			case OUTPUT:
3167 			case INSERTED:
3168 			case DELETED:
3169 			case FILENAME:
3170 			case SIZE:
3171 			case MAXSIZE:
3172 			case FILEGROWTH:
3173 			case UNLIMITED:
3174 			case KB:
3175 			case MB:
3176 			case GB:
3177 			case TB:
3178 			case CONTAINS:
3179 			case MEMORY_OPTIMIZED_DATA:
3180 			case FILEGROUP:
3181 			case NON_TRANSACTED_ACCESS:
3182 			case DB_CHAINING:
3183 			case TRUSTWORTHY:
3184 			case FORWARD_ONLY:
3185 			case KEYSET:
3186 			case FAST_FORWARD:
3187 			case SCROLL_LOCKS:
3188 			case OPTIMISTIC:
3189 			case TYPE_WARNING:
3190 			case SCHEMABINDING:
3191 			case CALLER:
3192 			case OWNER:
3193 			case SNAPSHOT:
3194 			case REPEATABLE:
3195 			case SERIALIZABLE:
3196 			case NATIVE_COMPILATION:
3197 			case VIEW_METADATA:
3198 			case INSTEAD:
3199 			case APPEND:
3200 			case INCREMENT:
3201 			case CACHE:
3202 			case MINVALUE:
3203 			case MAXVALUE:
3204 			case RESTART:
3205 			case LOB_COMPACTION:
3206 			case COMPRESS_ALL_ROW_GROUPS:
3207 			case REORGANIZE:
3208 			case RESUME:
3209 			case PAUSE:
3210 			case ABORT:
3211 			case ACCELERATED_DATABASE_RECOVERY:
3212 			case PERSISTENT_VERSION_STORE_FILEGROUP:
3213 			case IMMEDIATE:
3214 			case NO_WAIT:
3215 			case TARGET_RECOVERY_TIME:
3216 			case SECONDS:
3217 			case HONOR_BROKER_PRIORITY:
3218 			case ERROR_BROKER_CONVERSATIONS:
3219 			case NEW_BROKER:
3220 			case DISABLE_BROKER:
3221 			case ENABLE_BROKER:
3222 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
3223 			case READ_COMMITTED_SNAPSHOT:
3224 			case ALLOW_SNAPSHOT_ISOLATION:
3225 			case RECURSIVE_TRIGGERS:
3226 			case QUOTED_IDENTIFIER:
3227 			case NUMERIC_ROUNDABORT:
3228 			case CONCAT_NULL_YIELDS_NULL:
3229 			case COMPATIBILITY_LEVEL:
3230 			case ARITHABORT:
3231 			case ANSI_WARNINGS:
3232 			case ANSI_PADDING:
3233 			case ANSI_NULLS:
3234 			case ANSI_NULL_DEFAULT:
3235 			case PAGE_VERIFY:
3236 			case CHECKSUM:
3237 			case TORN_PAGE_DETECTION:
3238 			case BULK_LOGGED:
3239 			case RECOVERY:
3240 			case TOTAL_EXECUTION_CPU_TIME_MS:
3241 			case TOTAL_COMPILE_CPU_TIME_MS:
3242 			case STALE_CAPTURE_POLICY_THRESHOLD:
3243 			case EXECUTION_COUNT:
3244 			case QUERY_CAPTURE_POLICY:
3245 			case WAIT_STATS_CAPTURE_MODE:
3246 			case MAX_PLANS_PER_QUERY:
3247 			case QUERY_CAPTURE_MODE:
3248 			case SIZE_BASED_CLEANUP_MODE:
3249 			case INTERVAL_LENGTH_MINUTES:
3250 			case MAX_STORAGE_SIZE_MB:
3251 			case DATA_FLUSH_INTERVAL_SECONDS:
3252 			case CLEANUP_POLICY:
3253 			case CUSTOM:
3254 			case STALE_QUERY_THRESHOLD_DAYS:
3255 			case OPERATION_MODE:
3256 			case QUERY_STORE:
3257 			case CURSOR_DEFAULT:
3258 			case GLOBAL:
3259 			case CURSOR_CLOSE_ON_COMMIT:
3260 			case HOURS:
3261 			case CHANGE_RETENTION:
3262 			case AUTO_CLEANUP:
3263 			case CHANGE_TRACKING:
3264 			case AUTOMATIC_TUNING:
3265 			case FORCE_LAST_GOOD_PLAN:
3266 			case AUTO_UPDATE_STATISTICS_ASYNC:
3267 			case AUTO_UPDATE_STATISTICS:
3268 			case AUTO_SHRINK:
3269 			case AUTO_CREATE_STATISTICS:
3270 			case INCREMENTAL:
3271 			case AUTO_CLOSE:
3272 			case DATA_RETENTION:
3273 			case TEMPORAL_HISTORY_RETENTION:
3274 			case EDITION:
3275 			case MIXED_PAGE_ALLOCATION:
3276 			case DISABLED:
3277 			case ALLOWED:
3278 			case HADR:
3279 			case MULTI_USER:
3280 			case RESTRICTED_USER:
3281 			case SINGLE_USER:
3282 			case OFFLINE:
3283 			case EMERGENCY:
3284 			case SUSPEND:
3285 			case DATE_CORRELATION_OPTIMIZATION:
3286 			case ELASTIC_POOL:
3287 			case SERVICE_OBJECTIVE:
3288 			case DATABASE_NAME:
3289 			case ALLOW_CONNECTIONS:
3290 			case GEO:
3291 			case NAMED:
3292 			case DATEFIRST:
3293 			case BACKUP_STORAGE_REDUNDANCY:
3294 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
3295 			case SECONDARY:
3296 			case FAILOVER:
3297 			case DEFAULT_FULLTEXT_LANGUAGE:
3298 			case DEFAULT_LANGUAGE:
3299 			case INLINE:
3300 			case NESTED_TRIGGERS:
3301 			case TRANSFORM_NOISE_WORDS:
3302 			case TWO_DIGIT_YEAR_CUTOFF:
3303 			case PERSISTENT_LOG_BUFFER:
3304 			case DIRECTORY_NAME:
3305 			case DATEFORMAT:
3306 			case DELAYED_DURABILITY:
3307 			case AUTHORIZATION:
3308 			case TRANSFER:
3309 			case PROVIDER:
3310 			case SEARCH:
3311 			case MEMBER:
3312 				enterOuterAlt(_localctx, 2);
3313 				{
3314 				setState(1171);
3315 				unreservedWord();
3316 				}
3317 				break;
3318 			default:
3319 				throw new NoViableAltException(this);
3320 			}
3321 		}
3322 		catch (RecognitionException re) {
3323 			_localctx.exception = re;
3324 			_errHandler.reportError(this, re);
3325 			_errHandler.recover(this, re);
3326 		}
3327 		finally {
3328 			exitRule();
3329 		}
3330 		return _localctx;
3331 	}
3332 
3333 	public static class DelimitedIdentifierContext extends ParserRuleContext {
3334 		public TerminalNode DELIMITED_IDENTIFIER_() { return getToken(SQLServerStatementParser.DELIMITED_IDENTIFIER_, 0); }
3335 		public DelimitedIdentifierContext(ParserRuleContext parent, int invokingState) {
3336 			super(parent, invokingState);
3337 		}
3338 		@Override public int getRuleIndex() { return RULE_delimitedIdentifier; }
3339 		@Override
3340 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3341 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDelimitedIdentifier(this);
3342 			else return visitor.visitChildren(this);
3343 		}
3344 	}
3345 
3346 	public final DelimitedIdentifierContext delimitedIdentifier() throws RecognitionException {
3347 		DelimitedIdentifierContext _localctx = new DelimitedIdentifierContext(_ctx, getState());
3348 		enterRule(_localctx, 46, RULE_delimitedIdentifier);
3349 		try {
3350 			enterOuterAlt(_localctx, 1);
3351 			{
3352 			setState(1174);
3353 			match(DELIMITED_IDENTIFIER_);
3354 			}
3355 		}
3356 		catch (RecognitionException re) {
3357 			_localctx.exception = re;
3358 			_errHandler.reportError(this, re);
3359 			_errHandler.recover(this, re);
3360 		}
3361 		finally {
3362 			exitRule();
3363 		}
3364 		return _localctx;
3365 	}
3366 
3367 	public static class UnreservedWordContext extends ParserRuleContext {
3368 		public TerminalNode TRUNCATE() { return getToken(SQLServerStatementParser.TRUNCATE, 0); }
3369 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
3370 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
3371 		public TerminalNode LIMIT() { return getToken(SQLServerStatementParser.LIMIT, 0); }
3372 		public TerminalNode OFFSET() { return getToken(SQLServerStatementParser.OFFSET, 0); }
3373 		public TerminalNode SAVEPOINT() { return getToken(SQLServerStatementParser.SAVEPOINT, 0); }
3374 		public TerminalNode BOOLEAN() { return getToken(SQLServerStatementParser.BOOLEAN, 0); }
3375 		public TerminalNode ARRAY() { return getToken(SQLServerStatementParser.ARRAY, 0); }
3376 		public TerminalNode LOCALTIME() { return getToken(SQLServerStatementParser.LOCALTIME, 0); }
3377 		public TerminalNode LOCALTIMESTAMP() { return getToken(SQLServerStatementParser.LOCALTIMESTAMP, 0); }
3378 		public TerminalNode QUARTER() { return getToken(SQLServerStatementParser.QUARTER, 0); }
3379 		public TerminalNode WEEK() { return getToken(SQLServerStatementParser.WEEK, 0); }
3380 		public TerminalNode MICROSECOND() { return getToken(SQLServerStatementParser.MICROSECOND, 0); }
3381 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
3382 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
3383 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
3384 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
3385 		public TerminalNode MOD() { return getToken(SQLServerStatementParser.MOD, 0); }
3386 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
3387 		public TerminalNode TOP() { return getToken(SQLServerStatementParser.TOP, 0); }
3388 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
3389 		public TerminalNode XOR() { return getToken(SQLServerStatementParser.XOR, 0); }
3390 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
3391 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
3392 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
3393 		public TerminalNode ALGORITHM() { return getToken(SQLServerStatementParser.ALGORITHM, 0); }
3394 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
3395 		public TerminalNode BLOCKERS() { return getToken(SQLServerStatementParser.BLOCKERS, 0); }
3396 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
3397 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
3398 		public TerminalNode CONTENT() { return getToken(SQLServerStatementParser.CONTENT, 0); }
3399 		public TerminalNode CONCAT() { return getToken(SQLServerStatementParser.CONCAT, 0); }
3400 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
3401 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
3402 		public TerminalNode DENY() { return getToken(SQLServerStatementParser.DENY, 0); }
3403 		public TerminalNode DETERMINISTIC() { return getToken(SQLServerStatementParser.DETERMINISTIC, 0); }
3404 		public TerminalNode DISTRIBUTION() { return getToken(SQLServerStatementParser.DISTRIBUTION, 0); }
3405 		public TerminalNode DOCUMENT() { return getToken(SQLServerStatementParser.DOCUMENT, 0); }
3406 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
3407 		public TerminalNode ENCRYPTED() { return getToken(SQLServerStatementParser.ENCRYPTED, 0); }
3408 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
3409 		public TerminalNode FILETABLE() { return getToken(SQLServerStatementParser.FILETABLE, 0); }
3410 		public TerminalNode FOLLOWING() { return getToken(SQLServerStatementParser.FOLLOWING, 0); }
3411 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
3412 		public TerminalNode HEAP() { return getToken(SQLServerStatementParser.HEAP, 0); }
3413 		public TerminalNode INBOUND() { return getToken(SQLServerStatementParser.INBOUND, 0); }
3414 		public TerminalNode INFINITE() { return getToken(SQLServerStatementParser.INFINITE, 0); }
3415 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
3416 		public TerminalNode MASKED() { return getToken(SQLServerStatementParser.MASKED, 0); }
3417 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
3418 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
3419 		public TerminalNode MONTHS() { return getToken(SQLServerStatementParser.MONTHS, 0); }
3420 		public TerminalNode MOVE() { return getToken(SQLServerStatementParser.MOVE, 0); }
3421 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
3422 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
3423 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
3424 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
3425 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
3426 		public TerminalNode OUTBOUND() { return getToken(SQLServerStatementParser.OUTBOUND, 0); }
3427 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
3428 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
3429 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
3430 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
3431 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
3432 		public TerminalNode PERSISTED() { return getToken(SQLServerStatementParser.PERSISTED, 0); }
3433 		public TerminalNode PRECEDING() { return getToken(SQLServerStatementParser.PRECEDING, 0); }
3434 		public TerminalNode RANDOMIZED() { return getToken(SQLServerStatementParser.RANDOMIZED, 0); }
3435 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
3436 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
3437 		public TerminalNode REPLICATE() { return getToken(SQLServerStatementParser.REPLICATE, 0); }
3438 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
3439 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
3440 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
3441 		public TerminalNode SAVE() { return getToken(SQLServerStatementParser.SAVE, 0); }
3442 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
3443 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
3444 		public TerminalNode SWITCH() { return getToken(SQLServerStatementParser.SWITCH, 0); }
3445 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
3446 		public TerminalNode TRANCOUNT() { return getToken(SQLServerStatementParser.TRANCOUNT, 0); }
3447 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
3448 		public TerminalNode YEARS() { return getToken(SQLServerStatementParser.YEARS, 0); }
3449 		public TerminalNode WEEKS() { return getToken(SQLServerStatementParser.WEEKS, 0); }
3450 		public TerminalNode ABORT_AFTER_WAIT() { return getToken(SQLServerStatementParser.ABORT_AFTER_WAIT, 0); }
3451 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
3452 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
3453 		public TerminalNode ALL_SPARSE_COLUMNS() { return getToken(SQLServerStatementParser.ALL_SPARSE_COLUMNS, 0); }
3454 		public TerminalNode BUCKET_COUNT() { return getToken(SQLServerStatementParser.BUCKET_COUNT, 0); }
3455 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
3456 		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(SQLServerStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
3457 		public TerminalNode COLUMN_SET() { return getToken(SQLServerStatementParser.COLUMN_SET, 0); }
3458 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
3459 		public TerminalNode DATABASE_DEAULT() { return getToken(SQLServerStatementParser.DATABASE_DEAULT, 0); }
3460 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
3461 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
3462 		public TerminalNode ENCRYPTION_TYPE() { return getToken(SQLServerStatementParser.ENCRYPTION_TYPE, 0); }
3463 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
3464 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
3465 		public TerminalNode TEXTIMAGE_ON() { return getToken(SQLServerStatementParser.TEXTIMAGE_ON, 0); }
3466 		public TerminalNode WAIT_AT_LOW_PRIORITY() { return getToken(SQLServerStatementParser.WAIT_AT_LOW_PRIORITY, 0); }
3467 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
3468 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
3469 		public TerminalNode ROUND_ROBIN() { return getToken(SQLServerStatementParser.ROUND_ROBIN, 0); }
3470 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
3471 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
3472 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
3473 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
3474 		public TerminalNode IMPLICIT_TRANSACTIONS() { return getToken(SQLServerStatementParser.IMPLICIT_TRANSACTIONS, 0); }
3475 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
3476 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
3477 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
3478 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
3479 		public TerminalNode REMOTE_DATA_ARCHIVE() { return getToken(SQLServerStatementParser.REMOTE_DATA_ARCHIVE, 0); }
3480 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
3481 		public TerminalNode FILETABLE_COLLATE_FILENAME() { return getToken(SQLServerStatementParser.FILETABLE_COLLATE_FILENAME, 0); }
3482 		public TerminalNode FILETABLE_DIRECTORY() { return getToken(SQLServerStatementParser.FILETABLE_DIRECTORY, 0); }
3483 		public TerminalNode FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME, 0); }
3484 		public TerminalNode FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME, 0); }
3485 		public TerminalNode FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME, 0); }
3486 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
3487 		public TerminalNode FILTER_PREDICATE() { return getToken(SQLServerStatementParser.FILTER_PREDICATE, 0); }
3488 		public TerminalNode HISTORY_RETENTION_PERIOD() { return getToken(SQLServerStatementParser.HISTORY_RETENTION_PERIOD, 0); }
3489 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
3490 		public TerminalNode LOCK_ESCALATION() { return getToken(SQLServerStatementParser.LOCK_ESCALATION, 0); }
3491 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
3492 		public TerminalNode ROW_NUMBER() { return getToken(SQLServerStatementParser.ROW_NUMBER, 0); }
3493 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
3494 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
3495 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
3496 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
3497 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
3498 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
3499 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
3500 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
3501 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
3502 		public TerminalNode RECEIVE() { return getToken(SQLServerStatementParser.RECEIVE, 0); }
3503 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
3504 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
3505 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
3506 		public TerminalNode RESOURCES() { return getToken(SQLServerStatementParser.RESOURCES, 0); }
3507 		public TerminalNode SETTINGS() { return getToken(SQLServerStatementParser.SETTINGS, 0); }
3508 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
3509 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
3510 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
3511 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
3512 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
3513 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
3514 		public TerminalNode LINKED() { return getToken(SQLServerStatementParser.LINKED, 0); }
3515 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
3516 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
3517 		public TerminalNode SQL() { return getToken(SQLServerStatementParser.SQL, 0); }
3518 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
3519 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
3520 		public TerminalNode SECURABLES() { return getToken(SQLServerStatementParser.SECURABLES, 0); }
3521 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
3522 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
3523 		public TerminalNode ACCESS() { return getToken(SQLServerStatementParser.ACCESS, 0); }
3524 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
3525 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
3526 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
3527 		public TerminalNode UNSAFE() { return getToken(SQLServerStatementParser.UNSAFE, 0); }
3528 		public TerminalNode SHUTDOWN() { return getToken(SQLServerStatementParser.SHUTDOWN, 0); }
3529 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
3530 		public TerminalNode CONFIGURATION() { return getToken(SQLServerStatementParser.CONFIGURATION, 0); }
3531 		public TerminalNode DATASPACE() { return getToken(SQLServerStatementParser.DATASPACE, 0); }
3532 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
3533 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
3534 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
3535 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
3536 		public TerminalNode MASTER() { return getToken(SQLServerStatementParser.MASTER, 0); }
3537 		public TerminalNode DATA() { return getToken(SQLServerStatementParser.DATA, 0); }
3538 		public TerminalNode SOURCE() { return getToken(SQLServerStatementParser.SOURCE, 0); }
3539 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
3540 		public TerminalNode FORMAT() { return getToken(SQLServerStatementParser.FORMAT, 0); }
3541 		public TerminalNode LIBRARY() { return getToken(SQLServerStatementParser.LIBRARY, 0); }
3542 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
3543 		public TerminalNode MASK() { return getToken(SQLServerStatementParser.MASK, 0); }
3544 		public TerminalNode UNMASK() { return getToken(SQLServerStatementParser.UNMASK, 0); }
3545 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
3546 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
3547 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
3548 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
3549 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
3550 		public TerminalNode SECURITY() { return getToken(SQLServerStatementParser.SECURITY, 0); }
3551 		public TerminalNode POLICY() { return getToken(SQLServerStatementParser.POLICY, 0); }
3552 		public TerminalNode AGGREGATE() { return getToken(SQLServerStatementParser.AGGREGATE, 0); }
3553 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
3554 		public TerminalNode RULE() { return getToken(SQLServerStatementParser.RULE, 0); }
3555 		public TerminalNode SYNONYM() { return getToken(SQLServerStatementParser.SYNONYM, 0); }
3556 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
3557 		public TerminalNode SCRIPT() { return getToken(SQLServerStatementParser.SCRIPT, 0); }
3558 		public TerminalNode KILL() { return getToken(SQLServerStatementParser.KILL, 0); }
3559 		public TerminalNode BACKUP() { return getToken(SQLServerStatementParser.BACKUP, 0); }
3560 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
3561 		public TerminalNode SHOWPLAN() { return getToken(SQLServerStatementParser.SHOWPLAN, 0); }
3562 		public TerminalNode SUBSCRIBE() { return getToken(SQLServerStatementParser.SUBSCRIBE, 0); }
3563 		public TerminalNode QUERY() { return getToken(SQLServerStatementParser.QUERY, 0); }
3564 		public TerminalNode NOTIFICATIONS() { return getToken(SQLServerStatementParser.NOTIFICATIONS, 0); }
3565 		public TerminalNode CHECKPOINT() { return getToken(SQLServerStatementParser.CHECKPOINT, 0); }
3566 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
3567 		public TerminalNode INSTANCE() { return getToken(SQLServerStatementParser.INSTANCE, 0); }
3568 		public TerminalNode DO() { return getToken(SQLServerStatementParser.DO, 0); }
3569 		public TerminalNode DEFINER() { return getToken(SQLServerStatementParser.DEFINER, 0); }
3570 		public TerminalNode LOCAL() { return getToken(SQLServerStatementParser.LOCAL, 0); }
3571 		public TerminalNode CASCADED() { return getToken(SQLServerStatementParser.CASCADED, 0); }
3572 		public TerminalNode NEXT() { return getToken(SQLServerStatementParser.NEXT, 0); }
3573 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
3574 		public TerminalNode INTEGER() { return getToken(SQLServerStatementParser.INTEGER, 0); }
3575 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
3576 		public TerminalNode MIN() { return getToken(SQLServerStatementParser.MIN, 0); }
3577 		public TerminalNode SUM() { return getToken(SQLServerStatementParser.SUM, 0); }
3578 		public TerminalNode COUNT() { return getToken(SQLServerStatementParser.COUNT, 0); }
3579 		public TerminalNode AVG() { return getToken(SQLServerStatementParser.AVG, 0); }
3580 		public TerminalNode FIRST() { return getToken(SQLServerStatementParser.FIRST, 0); }
3581 		public TerminalNode DATETIME2() { return getToken(SQLServerStatementParser.DATETIME2, 0); }
3582 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
3583 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
3584 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
3585 		public TerminalNode KB() { return getToken(SQLServerStatementParser.KB, 0); }
3586 		public TerminalNode MB() { return getToken(SQLServerStatementParser.MB, 0); }
3587 		public TerminalNode GB() { return getToken(SQLServerStatementParser.GB, 0); }
3588 		public TerminalNode TB() { return getToken(SQLServerStatementParser.TB, 0); }
3589 		public TerminalNode FILENAME() { return getToken(SQLServerStatementParser.FILENAME, 0); }
3590 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
3591 		public TerminalNode FILEGROWTH() { return getToken(SQLServerStatementParser.FILEGROWTH, 0); }
3592 		public TerminalNode UNLIMITED() { return getToken(SQLServerStatementParser.UNLIMITED, 0); }
3593 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
3594 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
3595 		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(SQLServerStatementParser.NON_TRANSACTED_ACCESS, 0); }
3596 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
3597 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
3598 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
3599 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
3600 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
3601 		public TerminalNode DATEPART() { return getToken(SQLServerStatementParser.DATEPART, 0); }
3602 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
3603 		public TerminalNode DAY() { return getToken(SQLServerStatementParser.DAY, 0); }
3604 		public TerminalNode FORWARD_ONLY() { return getToken(SQLServerStatementParser.FORWARD_ONLY, 0); }
3605 		public TerminalNode KEYSET() { return getToken(SQLServerStatementParser.KEYSET, 0); }
3606 		public TerminalNode FAST_FORWARD() { return getToken(SQLServerStatementParser.FAST_FORWARD, 0); }
3607 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
3608 		public TerminalNode SCROLL_LOCKS() { return getToken(SQLServerStatementParser.SCROLL_LOCKS, 0); }
3609 		public TerminalNode OPTIMISTIC() { return getToken(SQLServerStatementParser.OPTIMISTIC, 0); }
3610 		public TerminalNode TYPE_WARNING() { return getToken(SQLServerStatementParser.TYPE_WARNING, 0); }
3611 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
3612 		public TerminalNode CALLER() { return getToken(SQLServerStatementParser.CALLER, 0); }
3613 		public TerminalNode OWNER() { return getToken(SQLServerStatementParser.OWNER, 0); }
3614 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
3615 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
3616 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
3617 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
3618 		public TerminalNode VIEW_METADATA() { return getToken(SQLServerStatementParser.VIEW_METADATA, 0); }
3619 		public TerminalNode INSTEAD() { return getToken(SQLServerStatementParser.INSTEAD, 0); }
3620 		public TerminalNode APPEND() { return getToken(SQLServerStatementParser.APPEND, 0); }
3621 		public TerminalNode INCREMENT() { return getToken(SQLServerStatementParser.INCREMENT, 0); }
3622 		public TerminalNode CACHE() { return getToken(SQLServerStatementParser.CACHE, 0); }
3623 		public TerminalNode MINVALUE() { return getToken(SQLServerStatementParser.MINVALUE, 0); }
3624 		public TerminalNode MAXVALUE() { return getToken(SQLServerStatementParser.MAXVALUE, 0); }
3625 		public TerminalNode RESTART() { return getToken(SQLServerStatementParser.RESTART, 0); }
3626 		public TerminalNode LOB_COMPACTION() { return getToken(SQLServerStatementParser.LOB_COMPACTION, 0); }
3627 		public TerminalNode COMPRESS_ALL_ROW_GROUPS() { return getToken(SQLServerStatementParser.COMPRESS_ALL_ROW_GROUPS, 0); }
3628 		public TerminalNode REORGANIZE() { return getToken(SQLServerStatementParser.REORGANIZE, 0); }
3629 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
3630 		public TerminalNode PAUSE() { return getToken(SQLServerStatementParser.PAUSE, 0); }
3631 		public TerminalNode ABORT() { return getToken(SQLServerStatementParser.ABORT, 0); }
3632 		public TerminalNode ACCELERATED_DATABASE_RECOVERY() { return getToken(SQLServerStatementParser.ACCELERATED_DATABASE_RECOVERY, 0); }
3633 		public TerminalNode PERSISTENT_VERSION_STORE_FILEGROUP() { return getToken(SQLServerStatementParser.PERSISTENT_VERSION_STORE_FILEGROUP, 0); }
3634 		public TerminalNode IMMEDIATE() { return getToken(SQLServerStatementParser.IMMEDIATE, 0); }
3635 		public TerminalNode NO_WAIT() { return getToken(SQLServerStatementParser.NO_WAIT, 0); }
3636 		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(SQLServerStatementParser.TARGET_RECOVERY_TIME, 0); }
3637 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
3638 		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(SQLServerStatementParser.HONOR_BROKER_PRIORITY, 0); }
3639 		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(SQLServerStatementParser.ERROR_BROKER_CONVERSATIONS, 0); }
3640 		public TerminalNode NEW_BROKER() { return getToken(SQLServerStatementParser.NEW_BROKER, 0); }
3641 		public TerminalNode DISABLE_BROKER() { return getToken(SQLServerStatementParser.DISABLE_BROKER, 0); }
3642 		public TerminalNode ENABLE_BROKER() { return getToken(SQLServerStatementParser.ENABLE_BROKER, 0); }
3643 		public TerminalNode MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, 0); }
3644 		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(SQLServerStatementParser.READ_COMMITTED_SNAPSHOT, 0); }
3645 		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(SQLServerStatementParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
3646 		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(SQLServerStatementParser.RECURSIVE_TRIGGERS, 0); }
3647 		public TerminalNode QUOTED_IDENTIFIER() { return getToken(SQLServerStatementParser.QUOTED_IDENTIFIER, 0); }
3648 		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(SQLServerStatementParser.NUMERIC_ROUNDABORT, 0); }
3649 		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(SQLServerStatementParser.CONCAT_NULL_YIELDS_NULL, 0); }
3650 		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(SQLServerStatementParser.COMPATIBILITY_LEVEL, 0); }
3651 		public TerminalNode ARITHABORT() { return getToken(SQLServerStatementParser.ARITHABORT, 0); }
3652 		public TerminalNode ANSI_WARNINGS() { return getToken(SQLServerStatementParser.ANSI_WARNINGS, 0); }
3653 		public TerminalNode ANSI_PADDING() { return getToken(SQLServerStatementParser.ANSI_PADDING, 0); }
3654 		public TerminalNode ANSI_NULLS() { return getToken(SQLServerStatementParser.ANSI_NULLS, 0); }
3655 		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(SQLServerStatementParser.ANSI_NULL_DEFAULT, 0); }
3656 		public TerminalNode PAGE_VERIFY() { return getToken(SQLServerStatementParser.PAGE_VERIFY, 0); }
3657 		public TerminalNode CHECKSUM() { return getToken(SQLServerStatementParser.CHECKSUM, 0); }
3658 		public TerminalNode TORN_PAGE_DETECTION() { return getToken(SQLServerStatementParser.TORN_PAGE_DETECTION, 0); }
3659 		public TerminalNode BULK_LOGGED() { return getToken(SQLServerStatementParser.BULK_LOGGED, 0); }
3660 		public TerminalNode RECOVERY() { return getToken(SQLServerStatementParser.RECOVERY, 0); }
3661 		public TerminalNode TOTAL_EXECUTION_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_EXECUTION_CPU_TIME_MS, 0); }
3662 		public TerminalNode TOTAL_COMPILE_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_COMPILE_CPU_TIME_MS, 0); }
3663 		public TerminalNode STALE_CAPTURE_POLICY_THRESHOLD() { return getToken(SQLServerStatementParser.STALE_CAPTURE_POLICY_THRESHOLD, 0); }
3664 		public TerminalNode EXECUTION_COUNT() { return getToken(SQLServerStatementParser.EXECUTION_COUNT, 0); }
3665 		public TerminalNode QUERY_CAPTURE_POLICY() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_POLICY, 0); }
3666 		public TerminalNode WAIT_STATS_CAPTURE_MODE() { return getToken(SQLServerStatementParser.WAIT_STATS_CAPTURE_MODE, 0); }
3667 		public TerminalNode MAX_PLANS_PER_QUERY() { return getToken(SQLServerStatementParser.MAX_PLANS_PER_QUERY, 0); }
3668 		public TerminalNode QUERY_CAPTURE_MODE() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_MODE, 0); }
3669 		public TerminalNode SIZE_BASED_CLEANUP_MODE() { return getToken(SQLServerStatementParser.SIZE_BASED_CLEANUP_MODE, 0); }
3670 		public TerminalNode INTERVAL_LENGTH_MINUTES() { return getToken(SQLServerStatementParser.INTERVAL_LENGTH_MINUTES, 0); }
3671 		public TerminalNode MAX_STORAGE_SIZE_MB() { return getToken(SQLServerStatementParser.MAX_STORAGE_SIZE_MB, 0); }
3672 		public TerminalNode DATA_FLUSH_INTERVAL_SECONDS() { return getToken(SQLServerStatementParser.DATA_FLUSH_INTERVAL_SECONDS, 0); }
3673 		public TerminalNode CLEANUP_POLICY() { return getToken(SQLServerStatementParser.CLEANUP_POLICY, 0); }
3674 		public TerminalNode CUSTOM() { return getToken(SQLServerStatementParser.CUSTOM, 0); }
3675 		public TerminalNode STALE_QUERY_THRESHOLD_DAYS() { return getToken(SQLServerStatementParser.STALE_QUERY_THRESHOLD_DAYS, 0); }
3676 		public TerminalNode OPERATION_MODE() { return getToken(SQLServerStatementParser.OPERATION_MODE, 0); }
3677 		public TerminalNode QUERY_STORE() { return getToken(SQLServerStatementParser.QUERY_STORE, 0); }
3678 		public TerminalNode CURSOR_DEFAULT() { return getToken(SQLServerStatementParser.CURSOR_DEFAULT, 0); }
3679 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
3680 		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(SQLServerStatementParser.CURSOR_CLOSE_ON_COMMIT, 0); }
3681 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
3682 		public TerminalNode CHANGE_RETENTION() { return getToken(SQLServerStatementParser.CHANGE_RETENTION, 0); }
3683 		public TerminalNode AUTO_CLEANUP() { return getToken(SQLServerStatementParser.AUTO_CLEANUP, 0); }
3684 		public TerminalNode CHANGE_TRACKING() { return getToken(SQLServerStatementParser.CHANGE_TRACKING, 0); }
3685 		public TerminalNode AUTOMATIC_TUNING() { return getToken(SQLServerStatementParser.AUTOMATIC_TUNING, 0); }
3686 		public TerminalNode FORCE_LAST_GOOD_PLAN() { return getToken(SQLServerStatementParser.FORCE_LAST_GOOD_PLAN, 0); }
3687 		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
3688 		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS, 0); }
3689 		public TerminalNode AUTO_SHRINK() { return getToken(SQLServerStatementParser.AUTO_SHRINK, 0); }
3690 		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_CREATE_STATISTICS, 0); }
3691 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
3692 		public TerminalNode AUTO_CLOSE() { return getToken(SQLServerStatementParser.AUTO_CLOSE, 0); }
3693 		public TerminalNode DATA_RETENTION() { return getToken(SQLServerStatementParser.DATA_RETENTION, 0); }
3694 		public TerminalNode TEMPORAL_HISTORY_RETENTION() { return getToken(SQLServerStatementParser.TEMPORAL_HISTORY_RETENTION, 0); }
3695 		public TerminalNode EDITION() { return getToken(SQLServerStatementParser.EDITION, 0); }
3696 		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(SQLServerStatementParser.MIXED_PAGE_ALLOCATION, 0); }
3697 		public TerminalNode DISABLED() { return getToken(SQLServerStatementParser.DISABLED, 0); }
3698 		public TerminalNode ALLOWED() { return getToken(SQLServerStatementParser.ALLOWED, 0); }
3699 		public TerminalNode HADR() { return getToken(SQLServerStatementParser.HADR, 0); }
3700 		public TerminalNode MULTI_USER() { return getToken(SQLServerStatementParser.MULTI_USER, 0); }
3701 		public TerminalNode RESTRICTED_USER() { return getToken(SQLServerStatementParser.RESTRICTED_USER, 0); }
3702 		public TerminalNode SINGLE_USER() { return getToken(SQLServerStatementParser.SINGLE_USER, 0); }
3703 		public TerminalNode OFFLINE() { return getToken(SQLServerStatementParser.OFFLINE, 0); }
3704 		public TerminalNode EMERGENCY() { return getToken(SQLServerStatementParser.EMERGENCY, 0); }
3705 		public TerminalNode SUSPEND() { return getToken(SQLServerStatementParser.SUSPEND, 0); }
3706 		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(SQLServerStatementParser.DATE_CORRELATION_OPTIMIZATION, 0); }
3707 		public TerminalNode ELASTIC_POOL() { return getToken(SQLServerStatementParser.ELASTIC_POOL, 0); }
3708 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
3709 		public TerminalNode DATABASE_NAME() { return getToken(SQLServerStatementParser.DATABASE_NAME, 0); }
3710 		public TerminalNode ALLOW_CONNECTIONS() { return getToken(SQLServerStatementParser.ALLOW_CONNECTIONS, 0); }
3711 		public TerminalNode GEO() { return getToken(SQLServerStatementParser.GEO, 0); }
3712 		public TerminalNode NAMED() { return getToken(SQLServerStatementParser.NAMED, 0); }
3713 		public TerminalNode DATEFIRST() { return getToken(SQLServerStatementParser.DATEFIRST, 0); }
3714 		public TerminalNode BACKUP_STORAGE_REDUNDANCY() { return getToken(SQLServerStatementParser.BACKUP_STORAGE_REDUNDANCY, 0); }
3715 		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(SQLServerStatementParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
3716 		public TerminalNode SECONDARY() { return getToken(SQLServerStatementParser.SECONDARY, 0); }
3717 		public TerminalNode FAILOVER() { return getToken(SQLServerStatementParser.FAILOVER, 0); }
3718 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
3719 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
3720 		public TerminalNode INLINE() { return getToken(SQLServerStatementParser.INLINE, 0); }
3721 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
3722 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
3723 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
3724 		public TerminalNode PERSISTENT_LOG_BUFFER() { return getToken(SQLServerStatementParser.PERSISTENT_LOG_BUFFER, 0); }
3725 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
3726 		public TerminalNode DATEFORMAT() { return getToken(SQLServerStatementParser.DATEFORMAT, 0); }
3727 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
3728 		public TerminalNode TRANSFER() { return getToken(SQLServerStatementParser.TRANSFER, 0); }
3729 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
3730 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
3731 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
3732 		public TerminalNode MEMBER() { return getToken(SQLServerStatementParser.MEMBER, 0); }
3733 		public TerminalNode SEARCH() { return getToken(SQLServerStatementParser.SEARCH, 0); }
3734 		public TerminalNode TEXT() { return getToken(SQLServerStatementParser.TEXT, 0); }
3735 		public TerminalNode SECOND() { return getToken(SQLServerStatementParser.SECOND, 0); }
3736 		public TerminalNode PRECISION() { return getToken(SQLServerStatementParser.PRECISION, 0); }
3737 		public TerminalNode VIEWS() { return getToken(SQLServerStatementParser.VIEWS, 0); }
3738 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
3739 		public TerminalNode COLUMNS() { return getToken(SQLServerStatementParser.COLUMNS, 0); }
3740 		public TerminalNode SUBSTRING() { return getToken(SQLServerStatementParser.SUBSTRING, 0); }
3741 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
3742 		public TerminalNode SIZE() { return getToken(SQLServerStatementParser.SIZE, 0); }
3743 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
3744 		public TerminalNode MONTH() { return getToken(SQLServerStatementParser.MONTH, 0); }
3745 		public UnreservedWordContext(ParserRuleContext parent, int invokingState) {
3746 			super(parent, invokingState);
3747 		}
3748 		@Override public int getRuleIndex() { return RULE_unreservedWord; }
3749 		@Override
3750 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3751 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUnreservedWord(this);
3752 			else return visitor.visitChildren(this);
3753 		}
3754 	}
3755 
3756 	public final UnreservedWordContext unreservedWord() throws RecognitionException {
3757 		UnreservedWordContext _localctx = new UnreservedWordContext(_ctx, getState());
3758 		enterRule(_localctx, 48, RULE_unreservedWord);
3759 		int _la;
3760 		try {
3761 			enterOuterAlt(_localctx, 1);
3762 			{
3763 			setState(1176);
3764 			_la = _input.LA(1);
3765 			if ( !(((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)) | (1L << (ROW - 184)) | (1L << (ROWS - 184)) | (1L << (XOR - 184)) | (1L << (ALWAYS - 184)))) != 0) || ((((_la - 254)) & ~0x3f) == 0 && ((1L << (_la - 254)) & ((1L << (ROLE - 254)) | (1L << (START - 254)) | (1L << (ALGORITHM - 254)) | (1L << (AUTO - 254)) | (1L << (BLOCKERS - 254)) | (1L << (CLUSTERED - 254)) | (1L << (NONCLUSTERED - 254)) | (1L << (COLUMNSTORE - 254)) | (1L << (CONTENT - 254)) | (1L << (YEARS - 254)) | (1L << (MONTHS - 254)) | (1L << (WEEKS - 254)) | (1L << (DAYS - 254)) | (1L << (MINUTES - 254)) | (1L << (DENY - 254)) | (1L << (DETERMINISTIC - 254)) | (1L << (DISTRIBUTION - 254)) | (1L << (DOCUMENT - 254)) | (1L << (DURABILITY - 254)) | (1L << (ENCRYPTED - 254)) | (1L << (FILESTREAM - 254)) | (1L << (FILETABLE - 254)) | (1L << (FILLFACTOR - 254)) | (1L << (FOLLOWING - 254)) | (1L << (HASH - 254)) | (1L << (HEAP - 254)) | (1L << (INBOUND - 254)) | (1L << (OUTBOUND - 254)) | (1L << (UNBOUNDED - 254)) | (1L << (INFINITE - 254)) | (1L << (LOGIN - 254)) | (1L << (MASKED - 254)) | (1L << (MAXDOP - 254)) | (1L << (MOVE - 254)) | (1L << (NOCHECK - 254)) | (1L << (OBJECT - 254)) | (1L << (ONLINE - 254)) | (1L << (OVER - 254)) | (1L << (PAGE - 254)) | (1L << (PAUSED - 254)) | (1L << (PERIOD - 254)) | (1L << (PERSISTED - 254)) | (1L << (PRECEDING - 254)) | (1L << (RANDOMIZED - 254)) | (1L << (RANGE - 254)) | (1L << (REBUILD - 254)) | (1L << (REPLICATE - 254)) | (1L << (REPLICATION - 254)) | (1L << (RESUMABLE - 254)) | (1L << (ROWGUIDCOL - 254)) | (1L << (SAVE - 254)) | (1L << (SELF - 254)) | (1L << (SPARSE - 254)) | (1L << (SWITCH - 254)) | (1L << (TRAN - 254)) | (1L << (TRANCOUNT - 254)))) != 0) || ((((_la - 324)) & ~0x3f) == 0 && ((1L << (_la - 324)) & ((1L << (CONTROL - 324)) | (1L << (CONCAT - 324)) | (1L << (TAKE - 324)) | (1L << (OWNERSHIP - 324)) | (1L << (DEFINITION - 324)) | (1L << (APPLICATION - 324)) | (1L << (ASSEMBLY - 324)) | (1L << (SYMMETRIC - 324)) | (1L << (ASYMMETRIC - 324)) | (1L << (SERVER - 324)) | (1L << (RECEIVE - 324)) | (1L << (CHANGE - 324)) | (1L << (TRACE - 324)) | (1L << (TRACKING - 324)) | (1L << (RESOURCES - 324)) | (1L << (SETTINGS - 324)) | (1L << (STATE - 324)) | (1L << (AVAILABILITY - 324)) | (1L << (CREDENTIAL - 324)) | (1L << (ENDPOINT - 324)) | (1L << (EVENT - 324)) | (1L << (NOTIFICATION - 324)) | (1L << (LINKED - 324)) | (1L << (AUDIT - 324)) | (1L << (DDL - 324)) | (1L << (XML - 324)) | (1L << (IMPERSONATE - 324)) | (1L << (SECURABLES - 324)) | (1L << (AUTHENTICATE - 324)) | (1L << (EXTERNAL - 324)) | (1L << (ACCESS - 324)) | (1L << (ADMINISTER - 324)) | (1L << (BULK - 324)) | (1L << (OPERATIONS - 324)) | (1L << (UNSAFE - 324)) | (1L << (SHUTDOWN - 324)) | (1L << (SCOPED - 324)) | (1L << (CONFIGURATION - 324)) | (1L << (DATASPACE - 324)) | (1L << (SERVICE - 324)) | (1L << (CERTIFICATE - 324)) | (1L << (CONTRACT - 324)) | (1L << (ENCRYPTION - 324)) | (1L << (MASTER - 324)) | (1L << (DATA - 324)) | (1L << (SOURCE - 324)) | (1L << (FILE - 324)) | (1L << (FORMAT - 324)) | (1L << (LIBRARY - 324)) | (1L << (FULLTEXT - 324)) | (1L << (MASK - 324)) | (1L << (UNMASK - 324)) | (1L << (MESSAGE - 324)) | (1L << (REMOTE - 324)) | (1L << (BINDING - 324)) | (1L << (ROUTE - 324)) | (1L << (SECURITY - 324)) | (1L << (POLICY - 324)) | (1L << (AGGREGATE - 324)) | (1L << (QUEUE - 324)) | (1L << (RULE - 324)) | (1L << (SYNONYM - 324)) | (1L << (COLLECTION - 324)) | (1L << (SCRIPT - 324)))) != 0) || ((((_la - 388)) & ~0x3f) == 0 && ((1L << (_la - 388)) & ((1L << (KILL - 388)) | (1L << (BACKUP - 388)) | (1L << (LOG - 388)) | (1L << (SHOWPLAN - 388)) | (1L << (SUBSCRIBE - 388)) | (1L << (QUERY - 388)) | (1L << (NOTIFICATIONS - 388)) | (1L << (CHECKPOINT - 388)) | (1L << (SEQUENCE - 388)) | (1L << (ABORT_AFTER_WAIT - 388)) | (1L << (ALLOW_PAGE_LOCKS - 388)) | (1L << (ALLOW_ROW_LOCKS - 388)) | (1L << (ALL_SPARSE_COLUMNS - 388)) | (1L << (BUCKET_COUNT - 388)) | (1L << (COLUMNSTORE_ARCHIVE - 388)) | (1L << (COLUMN_ENCRYPTION_KEY - 388)) | (1L << (COLUMN_SET - 388)) | (1L << (COMPRESSION_DELAY - 388)) | (1L << (DATABASE_DEAULT - 388)) | (1L << (DATA_COMPRESSION - 388)) | (1L << (DATA_CONSISTENCY_CHECK - 388)) | (1L << (ENCRYPTION_TYPE - 388)) | (1L << (SYSTEM_TIME - 388)) | (1L << (SYSTEM_VERSIONING - 388)) | (1L << (TEXTIMAGE_ON - 388)) | (1L << (WAIT_AT_LOW_PRIORITY - 388)) | (1L << (STATISTICS_INCREMENTAL - 388)) | (1L << (STATISTICS_NORECOMPUTE - 388)) | (1L << (ROUND_ROBIN - 388)) | (1L << (SCHEMA_AND_DATA - 388)) | (1L << (SCHEMA_ONLY - 388)) | (1L << (SORT_IN_TEMPDB - 388)) | (1L << (IGNORE_DUP_KEY - 388)) | (1L << (IMPLICIT_TRANSACTIONS - 388)) | (1L << (MAX_DURATION - 388)) | (1L << (MEMORY_OPTIMIZED - 388)) | (1L << (MIGRATION_STATE - 388)) | (1L << (PAD_INDEX - 388)) | (1L << (REMOTE_DATA_ARCHIVE - 388)) | (1L << (FILESTREAM_ON - 388)) | (1L << (FILETABLE_COLLATE_FILENAME - 388)) | (1L << (FILETABLE_DIRECTORY - 388)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 388)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 388)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 388)) | (1L << (FILTER_PREDICATE - 388)) | (1L << (HISTORY_RETENTION_PERIOD - 388)) | (1L << (HISTORY_TABLE - 388)) | (1L << (LOCK_ESCALATION - 388)) | (1L << (DROP_EXISTING - 388)) | (1L << (ROW_NUMBER - 388)) | (1L << (FIRST - 388)) | (1L << (DATETIME2 - 388)))) != 0) || ((((_la - 458)) & ~0x3f) == 0 && ((1L << (_la - 458)) & ((1L << (OUTPUT - 458)) | (1L << (INSERTED - 458)) | (1L << (DELETED - 458)) | (1L << (FILENAME - 458)) | (1L << (SIZE - 458)) | (1L << (MAXSIZE - 458)) | (1L << (FILEGROWTH - 458)) | (1L << (UNLIMITED - 458)) | (1L << (KB - 458)) | (1L << (MB - 458)) | (1L << (GB - 458)) | (1L << (TB - 458)) | (1L << (CONTAINS - 458)) | (1L << (MEMORY_OPTIMIZED_DATA - 458)) | (1L << (FILEGROUP - 458)) | (1L << (NON_TRANSACTED_ACCESS - 458)) | (1L << (DB_CHAINING - 458)) | (1L << (TRUSTWORTHY - 458)) | (1L << (FORWARD_ONLY - 458)) | (1L << (KEYSET - 458)) | (1L << (FAST_FORWARD - 458)) | (1L << (SCROLL_LOCKS - 458)) | (1L << (OPTIMISTIC - 458)) | (1L << (TYPE_WARNING - 458)) | (1L << (SCHEMABINDING - 458)))) != 0) || ((((_la - 522)) & ~0x3f) == 0 && ((1L << (_la - 522)) & ((1L << (CALLER - 522)) | (1L << (OWNER - 522)) | (1L << (SNAPSHOT - 522)) | (1L << (REPEATABLE - 522)) | (1L << (SERIALIZABLE - 522)) | (1L << (NATIVE_COMPILATION - 522)) | (1L << (VIEW_METADATA - 522)) | (1L << (INSTEAD - 522)) | (1L << (APPEND - 522)) | (1L << (INCREMENT - 522)) | (1L << (CACHE - 522)) | (1L << (MINVALUE - 522)) | (1L << (MAXVALUE - 522)) | (1L << (RESTART - 522)) | (1L << (LOB_COMPACTION - 522)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 522)) | (1L << (REORGANIZE - 522)) | (1L << (RESUME - 522)) | (1L << (PAUSE - 522)) | (1L << (ABORT - 522)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 522)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 522)) | (1L << (IMMEDIATE - 522)) | (1L << (NO_WAIT - 522)) | (1L << (TARGET_RECOVERY_TIME - 522)) | (1L << (SECONDS - 522)) | (1L << (HONOR_BROKER_PRIORITY - 522)) | (1L << (ERROR_BROKER_CONVERSATIONS - 522)) | (1L << (NEW_BROKER - 522)) | (1L << (DISABLE_BROKER - 522)) | (1L << (ENABLE_BROKER - 522)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 522)) | (1L << (READ_COMMITTED_SNAPSHOT - 522)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 522)) | (1L << (RECURSIVE_TRIGGERS - 522)) | (1L << (QUOTED_IDENTIFIER - 522)) | (1L << (NUMERIC_ROUNDABORT - 522)) | (1L << (CONCAT_NULL_YIELDS_NULL - 522)) | (1L << (COMPATIBILITY_LEVEL - 522)) | (1L << (ARITHABORT - 522)) | (1L << (ANSI_WARNINGS - 522)) | (1L << (ANSI_PADDING - 522)) | (1L << (ANSI_NULLS - 522)))) != 0) || ((((_la - 586)) & ~0x3f) == 0 && ((1L << (_la - 586)) & ((1L << (ANSI_NULL_DEFAULT - 586)) | (1L << (PAGE_VERIFY - 586)) | (1L << (CHECKSUM - 586)) | (1L << (TORN_PAGE_DETECTION - 586)) | (1L << (BULK_LOGGED - 586)) | (1L << (RECOVERY - 586)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 586)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 586)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 586)) | (1L << (EXECUTION_COUNT - 586)) | (1L << (QUERY_CAPTURE_POLICY - 586)) | (1L << (WAIT_STATS_CAPTURE_MODE - 586)) | (1L << (MAX_PLANS_PER_QUERY - 586)) | (1L << (QUERY_CAPTURE_MODE - 586)) | (1L << (SIZE_BASED_CLEANUP_MODE - 586)) | (1L << (INTERVAL_LENGTH_MINUTES - 586)) | (1L << (MAX_STORAGE_SIZE_MB - 586)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 586)) | (1L << (CLEANUP_POLICY - 586)) | (1L << (CUSTOM - 586)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 586)) | (1L << (OPERATION_MODE - 586)) | (1L << (QUERY_STORE - 586)) | (1L << (CURSOR_DEFAULT - 586)) | (1L << (GLOBAL - 586)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 586)) | (1L << (HOURS - 586)) | (1L << (CHANGE_RETENTION - 586)) | (1L << (AUTO_CLEANUP - 586)) | (1L << (CHANGE_TRACKING - 586)) | (1L << (AUTOMATIC_TUNING - 586)) | (1L << (FORCE_LAST_GOOD_PLAN - 586)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 586)) | (1L << (AUTO_UPDATE_STATISTICS - 586)) | (1L << (AUTO_SHRINK - 586)) | (1L << (AUTO_CREATE_STATISTICS - 586)) | (1L << (INCREMENTAL - 586)) | (1L << (AUTO_CLOSE - 586)) | (1L << (DATA_RETENTION - 586)) | (1L << (TEMPORAL_HISTORY_RETENTION - 586)) | (1L << (EDITION - 586)) | (1L << (MIXED_PAGE_ALLOCATION - 586)) | (1L << (DISABLED - 586)) | (1L << (ALLOWED - 586)) | (1L << (HADR - 586)) | (1L << (MULTI_USER - 586)) | (1L << (RESTRICTED_USER - 586)) | (1L << (SINGLE_USER - 586)) | (1L << (OFFLINE - 586)) | (1L << (EMERGENCY - 586)) | (1L << (SUSPEND - 586)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 586)) | (1L << (ELASTIC_POOL - 586)) | (1L << (SERVICE_OBJECTIVE - 586)) | (1L << (DATABASE_NAME - 586)) | (1L << (ALLOW_CONNECTIONS - 586)) | (1L << (GEO - 586)) | (1L << (NAMED - 586)) | (1L << (DATEFIRST - 586)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 586)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 586)) | (1L << (SECONDARY - 586)) | (1L << (FAILOVER - 586)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 586)))) != 0) || ((((_la - 650)) & ~0x3f) == 0 && ((1L << (_la - 650)) & ((1L << (DEFAULT_LANGUAGE - 650)) | (1L << (INLINE - 650)) | (1L << (NESTED_TRIGGERS - 650)) | (1L << (TRANSFORM_NOISE_WORDS - 650)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 650)) | (1L << (PERSISTENT_LOG_BUFFER - 650)) | (1L << (DIRECTORY_NAME - 650)) | (1L << (DATEFORMAT - 650)) | (1L << (DELAYED_DURABILITY - 650)) | (1L << (AUTHORIZATION - 650)) | (1L << (TRANSFER - 650)) | (1L << (PROVIDER - 650)) | (1L << (SEARCH - 650)) | (1L << (MEMBER - 650)))) != 0)) ) {
3766 			_errHandler.recoverInline(this);
3767 			}
3768 			else {
3769 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
3770 				_errHandler.reportMatch(this);
3771 				consume();
3772 			}
3773 			}
3774 		}
3775 		catch (RecognitionException re) {
3776 			_localctx.exception = re;
3777 			_errHandler.reportError(this, re);
3778 			_errHandler.recover(this, re);
3779 		}
3780 		finally {
3781 			exitRule();
3782 		}
3783 		return _localctx;
3784 	}
3785 
3786 	public static class DatabaseNameContext extends ParserRuleContext {
3787 		public IdentifierContext identifier() {
3788 			return getRuleContext(IdentifierContext.class,0);
3789 		}
3790 		public DatabaseNameContext(ParserRuleContext parent, int invokingState) {
3791 			super(parent, invokingState);
3792 		}
3793 		@Override public int getRuleIndex() { return RULE_databaseName; }
3794 		@Override
3795 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3796 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseName(this);
3797 			else return visitor.visitChildren(this);
3798 		}
3799 	}
3800 
3801 	public final DatabaseNameContext databaseName() throws RecognitionException {
3802 		DatabaseNameContext _localctx = new DatabaseNameContext(_ctx, getState());
3803 		enterRule(_localctx, 50, RULE_databaseName);
3804 		try {
3805 			enterOuterAlt(_localctx, 1);
3806 			{
3807 			setState(1178);
3808 			identifier();
3809 			}
3810 		}
3811 		catch (RecognitionException re) {
3812 			_localctx.exception = re;
3813 			_errHandler.reportError(this, re);
3814 			_errHandler.recover(this, re);
3815 		}
3816 		finally {
3817 			exitRule();
3818 		}
3819 		return _localctx;
3820 	}
3821 
3822 	public static class SchemaNameContext extends ParserRuleContext {
3823 		public IdentifierContext identifier() {
3824 			return getRuleContext(IdentifierContext.class,0);
3825 		}
3826 		public SchemaNameContext(ParserRuleContext parent, int invokingState) {
3827 			super(parent, invokingState);
3828 		}
3829 		@Override public int getRuleIndex() { return RULE_schemaName; }
3830 		@Override
3831 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3832 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaName(this);
3833 			else return visitor.visitChildren(this);
3834 		}
3835 	}
3836 
3837 	public final SchemaNameContext schemaName() throws RecognitionException {
3838 		SchemaNameContext _localctx = new SchemaNameContext(_ctx, getState());
3839 		enterRule(_localctx, 52, RULE_schemaName);
3840 		try {
3841 			enterOuterAlt(_localctx, 1);
3842 			{
3843 			setState(1180);
3844 			identifier();
3845 			}
3846 		}
3847 		catch (RecognitionException re) {
3848 			_localctx.exception = re;
3849 			_errHandler.reportError(this, re);
3850 			_errHandler.recover(this, re);
3851 		}
3852 		finally {
3853 			exitRule();
3854 		}
3855 		return _localctx;
3856 	}
3857 
3858 	public static class FunctionNameContext extends ParserRuleContext {
3859 		public NameContext name() {
3860 			return getRuleContext(NameContext.class,0);
3861 		}
3862 		public OwnerContext owner() {
3863 			return getRuleContext(OwnerContext.class,0);
3864 		}
3865 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3866 		public FunctionNameContext(ParserRuleContext parent, int invokingState) {
3867 			super(parent, invokingState);
3868 		}
3869 		@Override public int getRuleIndex() { return RULE_functionName; }
3870 		@Override
3871 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3872 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionName(this);
3873 			else return visitor.visitChildren(this);
3874 		}
3875 	}
3876 
3877 	public final FunctionNameContext functionName() throws RecognitionException {
3878 		FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState());
3879 		enterRule(_localctx, 54, RULE_functionName);
3880 		try {
3881 			enterOuterAlt(_localctx, 1);
3882 			{
3883 			setState(1185);
3884 			_errHandler.sync(this);
3885 			switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
3886 			case 1:
3887 				{
3888 				setState(1182);
3889 				owner();
3890 				setState(1183);
3891 				match(DOT_);
3892 				}
3893 				break;
3894 			}
3895 			setState(1187);
3896 			name();
3897 			}
3898 		}
3899 		catch (RecognitionException re) {
3900 			_localctx.exception = re;
3901 			_errHandler.reportError(this, re);
3902 			_errHandler.recover(this, re);
3903 		}
3904 		finally {
3905 			exitRule();
3906 		}
3907 		return _localctx;
3908 	}
3909 
3910 	public static class ProcedureNameContext extends ParserRuleContext {
3911 		public NameContext name() {
3912 			return getRuleContext(NameContext.class,0);
3913 		}
3914 		public OwnerContext owner() {
3915 			return getRuleContext(OwnerContext.class,0);
3916 		}
3917 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3918 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
3919 		public NumberLiteralsContext numberLiterals() {
3920 			return getRuleContext(NumberLiteralsContext.class,0);
3921 		}
3922 		public ProcedureNameContext(ParserRuleContext parent, int invokingState) {
3923 			super(parent, invokingState);
3924 		}
3925 		@Override public int getRuleIndex() { return RULE_procedureName; }
3926 		@Override
3927 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3928 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcedureName(this);
3929 			else return visitor.visitChildren(this);
3930 		}
3931 	}
3932 
3933 	public final ProcedureNameContext procedureName() throws RecognitionException {
3934 		ProcedureNameContext _localctx = new ProcedureNameContext(_ctx, getState());
3935 		enterRule(_localctx, 56, RULE_procedureName);
3936 		try {
3937 			enterOuterAlt(_localctx, 1);
3938 			{
3939 			setState(1192);
3940 			_errHandler.sync(this);
3941 			switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
3942 			case 1:
3943 				{
3944 				setState(1189);
3945 				owner();
3946 				setState(1190);
3947 				match(DOT_);
3948 				}
3949 				break;
3950 			}
3951 			setState(1194);
3952 			name();
3953 			setState(1197);
3954 			_errHandler.sync(this);
3955 			switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
3956 			case 1:
3957 				{
3958 				setState(1195);
3959 				match(SEMI_);
3960 				setState(1196);
3961 				numberLiterals();
3962 				}
3963 				break;
3964 			}
3965 			}
3966 		}
3967 		catch (RecognitionException re) {
3968 			_localctx.exception = re;
3969 			_errHandler.reportError(this, re);
3970 			_errHandler.recover(this, re);
3971 		}
3972 		finally {
3973 			exitRule();
3974 		}
3975 		return _localctx;
3976 	}
3977 
3978 	public static class ViewNameContext extends ParserRuleContext {
3979 		public NameContext name() {
3980 			return getRuleContext(NameContext.class,0);
3981 		}
3982 		public OwnerContext owner() {
3983 			return getRuleContext(OwnerContext.class,0);
3984 		}
3985 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3986 		public ViewNameContext(ParserRuleContext parent, int invokingState) {
3987 			super(parent, invokingState);
3988 		}
3989 		@Override public int getRuleIndex() { return RULE_viewName; }
3990 		@Override
3991 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3992 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitViewName(this);
3993 			else return visitor.visitChildren(this);
3994 		}
3995 	}
3996 
3997 	public final ViewNameContext viewName() throws RecognitionException {
3998 		ViewNameContext _localctx = new ViewNameContext(_ctx, getState());
3999 		enterRule(_localctx, 58, RULE_viewName);
4000 		try {
4001 			enterOuterAlt(_localctx, 1);
4002 			{
4003 			setState(1202);
4004 			_errHandler.sync(this);
4005 			switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
4006 			case 1:
4007 				{
4008 				setState(1199);
4009 				owner();
4010 				setState(1200);
4011 				match(DOT_);
4012 				}
4013 				break;
4014 			}
4015 			setState(1204);
4016 			name();
4017 			}
4018 		}
4019 		catch (RecognitionException re) {
4020 			_localctx.exception = re;
4021 			_errHandler.reportError(this, re);
4022 			_errHandler.recover(this, re);
4023 		}
4024 		finally {
4025 			exitRule();
4026 		}
4027 		return _localctx;
4028 	}
4029 
4030 	public static class TriggerNameContext extends ParserRuleContext {
4031 		public NameContext name() {
4032 			return getRuleContext(NameContext.class,0);
4033 		}
4034 		public SchemaNameContext schemaName() {
4035 			return getRuleContext(SchemaNameContext.class,0);
4036 		}
4037 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4038 		public TriggerNameContext(ParserRuleContext parent, int invokingState) {
4039 			super(parent, invokingState);
4040 		}
4041 		@Override public int getRuleIndex() { return RULE_triggerName; }
4042 		@Override
4043 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4044 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTriggerName(this);
4045 			else return visitor.visitChildren(this);
4046 		}
4047 	}
4048 
4049 	public final TriggerNameContext triggerName() throws RecognitionException {
4050 		TriggerNameContext _localctx = new TriggerNameContext(_ctx, getState());
4051 		enterRule(_localctx, 60, RULE_triggerName);
4052 		try {
4053 			enterOuterAlt(_localctx, 1);
4054 			{
4055 			setState(1209);
4056 			_errHandler.sync(this);
4057 			switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
4058 			case 1:
4059 				{
4060 				setState(1206);
4061 				schemaName();
4062 				setState(1207);
4063 				match(DOT_);
4064 				}
4065 				break;
4066 			}
4067 			setState(1211);
4068 			name();
4069 			}
4070 		}
4071 		catch (RecognitionException re) {
4072 			_localctx.exception = re;
4073 			_errHandler.reportError(this, re);
4074 			_errHandler.recover(this, re);
4075 		}
4076 		finally {
4077 			exitRule();
4078 		}
4079 		return _localctx;
4080 	}
4081 
4082 	public static class SequenceNameContext extends ParserRuleContext {
4083 		public NameContext name() {
4084 			return getRuleContext(NameContext.class,0);
4085 		}
4086 		public SchemaNameContext schemaName() {
4087 			return getRuleContext(SchemaNameContext.class,0);
4088 		}
4089 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4090 		public SequenceNameContext(ParserRuleContext parent, int invokingState) {
4091 			super(parent, invokingState);
4092 		}
4093 		@Override public int getRuleIndex() { return RULE_sequenceName; }
4094 		@Override
4095 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4096 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSequenceName(this);
4097 			else return visitor.visitChildren(this);
4098 		}
4099 	}
4100 
4101 	public final SequenceNameContext sequenceName() throws RecognitionException {
4102 		SequenceNameContext _localctx = new SequenceNameContext(_ctx, getState());
4103 		enterRule(_localctx, 62, RULE_sequenceName);
4104 		try {
4105 			enterOuterAlt(_localctx, 1);
4106 			{
4107 			setState(1216);
4108 			_errHandler.sync(this);
4109 			switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
4110 			case 1:
4111 				{
4112 				setState(1213);
4113 				schemaName();
4114 				setState(1214);
4115 				match(DOT_);
4116 				}
4117 				break;
4118 			}
4119 			setState(1218);
4120 			name();
4121 			}
4122 		}
4123 		catch (RecognitionException re) {
4124 			_localctx.exception = re;
4125 			_errHandler.reportError(this, re);
4126 			_errHandler.recover(this, re);
4127 		}
4128 		finally {
4129 			exitRule();
4130 		}
4131 		return _localctx;
4132 	}
4133 
4134 	public static class TableNameContext extends ParserRuleContext {
4135 		public NameContext name() {
4136 			return getRuleContext(NameContext.class,0);
4137 		}
4138 		public DatabaseNameContext databaseName() {
4139 			return getRuleContext(DatabaseNameContext.class,0);
4140 		}
4141 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
4142 		public TerminalNode DOT_(int i) {
4143 			return getToken(SQLServerStatementParser.DOT_, i);
4144 		}
4145 		public OwnerContext owner() {
4146 			return getRuleContext(OwnerContext.class,0);
4147 		}
4148 		public TableNameContext(ParserRuleContext parent, int invokingState) {
4149 			super(parent, invokingState);
4150 		}
4151 		@Override public int getRuleIndex() { return RULE_tableName; }
4152 		@Override
4153 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4154 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableName(this);
4155 			else return visitor.visitChildren(this);
4156 		}
4157 	}
4158 
4159 	public final TableNameContext tableName() throws RecognitionException {
4160 		TableNameContext _localctx = new TableNameContext(_ctx, getState());
4161 		enterRule(_localctx, 64, RULE_tableName);
4162 		try {
4163 			enterOuterAlt(_localctx, 1);
4164 			{
4165 			setState(1232);
4166 			_errHandler.sync(this);
4167 			switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
4168 			case 1:
4169 				{
4170 				setState(1220);
4171 				databaseName();
4172 				setState(1221);
4173 				match(DOT_);
4174 				setState(1225);
4175 				_errHandler.sync(this);
4176 				switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
4177 				case 1:
4178 					{
4179 					setState(1222);
4180 					owner();
4181 					setState(1223);
4182 					match(DOT_);
4183 					}
4184 					break;
4185 				}
4186 				}
4187 				break;
4188 			case 2:
4189 				{
4190 				setState(1230);
4191 				_errHandler.sync(this);
4192 				switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
4193 				case 1:
4194 					{
4195 					setState(1227);
4196 					owner();
4197 					setState(1228);
4198 					match(DOT_);
4199 					}
4200 					break;
4201 				}
4202 				}
4203 				break;
4204 			}
4205 			setState(1234);
4206 			name();
4207 			}
4208 		}
4209 		catch (RecognitionException re) {
4210 			_localctx.exception = re;
4211 			_errHandler.reportError(this, re);
4212 			_errHandler.recover(this, re);
4213 		}
4214 		finally {
4215 			exitRule();
4216 		}
4217 		return _localctx;
4218 	}
4219 
4220 	public static class QueueNameContext extends ParserRuleContext {
4221 		public NameContext name() {
4222 			return getRuleContext(NameContext.class,0);
4223 		}
4224 		public SchemaNameContext schemaName() {
4225 			return getRuleContext(SchemaNameContext.class,0);
4226 		}
4227 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4228 		public QueueNameContext(ParserRuleContext parent, int invokingState) {
4229 			super(parent, invokingState);
4230 		}
4231 		@Override public int getRuleIndex() { return RULE_queueName; }
4232 		@Override
4233 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4234 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueueName(this);
4235 			else return visitor.visitChildren(this);
4236 		}
4237 	}
4238 
4239 	public final QueueNameContext queueName() throws RecognitionException {
4240 		QueueNameContext _localctx = new QueueNameContext(_ctx, getState());
4241 		enterRule(_localctx, 66, RULE_queueName);
4242 		try {
4243 			enterOuterAlt(_localctx, 1);
4244 			{
4245 			setState(1239);
4246 			_errHandler.sync(this);
4247 			switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
4248 			case 1:
4249 				{
4250 				setState(1236);
4251 				schemaName();
4252 				setState(1237);
4253 				match(DOT_);
4254 				}
4255 				break;
4256 			}
4257 			setState(1241);
4258 			name();
4259 			}
4260 		}
4261 		catch (RecognitionException re) {
4262 			_localctx.exception = re;
4263 			_errHandler.reportError(this, re);
4264 			_errHandler.recover(this, re);
4265 		}
4266 		finally {
4267 			exitRule();
4268 		}
4269 		return _localctx;
4270 	}
4271 
4272 	public static class ContractNameContext extends ParserRuleContext {
4273 		public NameContext name() {
4274 			return getRuleContext(NameContext.class,0);
4275 		}
4276 		public ContractNameContext(ParserRuleContext parent, int invokingState) {
4277 			super(parent, invokingState);
4278 		}
4279 		@Override public int getRuleIndex() { return RULE_contractName; }
4280 		@Override
4281 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4282 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitContractName(this);
4283 			else return visitor.visitChildren(this);
4284 		}
4285 	}
4286 
4287 	public final ContractNameContext contractName() throws RecognitionException {
4288 		ContractNameContext _localctx = new ContractNameContext(_ctx, getState());
4289 		enterRule(_localctx, 68, RULE_contractName);
4290 		try {
4291 			enterOuterAlt(_localctx, 1);
4292 			{
4293 			setState(1243);
4294 			name();
4295 			}
4296 		}
4297 		catch (RecognitionException re) {
4298 			_localctx.exception = re;
4299 			_errHandler.reportError(this, re);
4300 			_errHandler.recover(this, re);
4301 		}
4302 		finally {
4303 			exitRule();
4304 		}
4305 		return _localctx;
4306 	}
4307 
4308 	public static class ServiceNameContext extends ParserRuleContext {
4309 		public NameContext name() {
4310 			return getRuleContext(NameContext.class,0);
4311 		}
4312 		public ServiceNameContext(ParserRuleContext parent, int invokingState) {
4313 			super(parent, invokingState);
4314 		}
4315 		@Override public int getRuleIndex() { return RULE_serviceName; }
4316 		@Override
4317 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4318 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceName(this);
4319 			else return visitor.visitChildren(this);
4320 		}
4321 	}
4322 
4323 	public final ServiceNameContext serviceName() throws RecognitionException {
4324 		ServiceNameContext _localctx = new ServiceNameContext(_ctx, getState());
4325 		enterRule(_localctx, 70, RULE_serviceName);
4326 		try {
4327 			enterOuterAlt(_localctx, 1);
4328 			{
4329 			setState(1245);
4330 			name();
4331 			}
4332 		}
4333 		catch (RecognitionException re) {
4334 			_localctx.exception = re;
4335 			_errHandler.reportError(this, re);
4336 			_errHandler.recover(this, re);
4337 		}
4338 		finally {
4339 			exitRule();
4340 		}
4341 		return _localctx;
4342 	}
4343 
4344 	public static class ColumnNameContext extends ParserRuleContext {
4345 		public NameContext name() {
4346 			return getRuleContext(NameContext.class,0);
4347 		}
4348 		public ScriptVariableNameContext scriptVariableName() {
4349 			return getRuleContext(ScriptVariableNameContext.class,0);
4350 		}
4351 		public OwnerContext owner() {
4352 			return getRuleContext(OwnerContext.class,0);
4353 		}
4354 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4355 		public ColumnNameContext(ParserRuleContext parent, int invokingState) {
4356 			super(parent, invokingState);
4357 		}
4358 		@Override public int getRuleIndex() { return RULE_columnName; }
4359 		@Override
4360 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4361 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnName(this);
4362 			else return visitor.visitChildren(this);
4363 		}
4364 	}
4365 
4366 	public final ColumnNameContext columnName() throws RecognitionException {
4367 		ColumnNameContext _localctx = new ColumnNameContext(_ctx, getState());
4368 		enterRule(_localctx, 72, RULE_columnName);
4369 		try {
4370 			enterOuterAlt(_localctx, 1);
4371 			{
4372 			setState(1250);
4373 			_errHandler.sync(this);
4374 			switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
4375 			case 1:
4376 				{
4377 				setState(1247);
4378 				owner();
4379 				setState(1248);
4380 				match(DOT_);
4381 				}
4382 				break;
4383 			}
4384 			setState(1254);
4385 			_errHandler.sync(this);
4386 			switch (_input.LA(1)) {
4387 			case TRUNCATE:
4388 			case SCHEMA:
4389 			case COLUMNS:
4390 			case PRECISION:
4391 			case FUNCTION:
4392 			case TRIGGER:
4393 			case CAST:
4394 			case SUBSTRING:
4395 			case OFF:
4396 			case GROUP:
4397 			case LIMIT:
4398 			case OFFSET:
4399 			case SAVEPOINT:
4400 			case BOOLEAN:
4401 			case ARRAY:
4402 			case DATE:
4403 			case LOCALTIME:
4404 			case LOCALTIMESTAMP:
4405 			case QUARTER:
4406 			case MONTH:
4407 			case WEEK:
4408 			case DAY:
4409 			case SECOND:
4410 			case MICROSECOND:
4411 			case MAX:
4412 			case MIN:
4413 			case SUM:
4414 			case COUNT:
4415 			case AVG:
4416 			case ENABLE:
4417 			case DISABLE:
4418 			case INSTANCE:
4419 			case DO:
4420 			case DEFINER:
4421 			case SQL:
4422 			case CASCADED:
4423 			case LOCAL:
4424 			case NEXT:
4425 			case NAME:
4426 			case INTEGER:
4427 			case TYPE:
4428 			case TEXT:
4429 			case VIEWS:
4430 			case READ_ONLY:
4431 			case DATABASE:
4432 			case RETURNS:
4433 			case DATEPART:
4434 			case PASSWORD:
4435 			case BINARY:
4436 			case HIDDEN_:
4437 			case MOD:
4438 			case PARTITION:
4439 			case PARTITIONS:
4440 			case TOP:
4441 			case ROW:
4442 			case ROWS:
4443 			case XOR:
4444 			case ALWAYS:
4445 			case ROLE:
4446 			case START:
4447 			case ALGORITHM:
4448 			case AUTO:
4449 			case BLOCKERS:
4450 			case CLUSTERED:
4451 			case NONCLUSTERED:
4452 			case COLUMNSTORE:
4453 			case CONTENT:
4454 			case YEARS:
4455 			case MONTHS:
4456 			case WEEKS:
4457 			case DAYS:
4458 			case MINUTES:
4459 			case DENY:
4460 			case DETERMINISTIC:
4461 			case DISTRIBUTION:
4462 			case DOCUMENT:
4463 			case DURABILITY:
4464 			case ENCRYPTED:
4465 			case FILESTREAM:
4466 			case FILETABLE:
4467 			case FILLFACTOR:
4468 			case FOLLOWING:
4469 			case HASH:
4470 			case HEAP:
4471 			case INBOUND:
4472 			case OUTBOUND:
4473 			case UNBOUNDED:
4474 			case INFINITE:
4475 			case LOGIN:
4476 			case MASKED:
4477 			case MAXDOP:
4478 			case MOVE:
4479 			case NOCHECK:
4480 			case OBJECT:
4481 			case ONLINE:
4482 			case OVER:
4483 			case PAGE:
4484 			case PAUSED:
4485 			case PERIOD:
4486 			case PERSISTED:
4487 			case PRECEDING:
4488 			case RANDOMIZED:
4489 			case RANGE:
4490 			case REBUILD:
4491 			case REPLICATE:
4492 			case REPLICATION:
4493 			case RESUMABLE:
4494 			case ROWGUIDCOL:
4495 			case SAVE:
4496 			case SELF:
4497 			case SPARSE:
4498 			case SWITCH:
4499 			case TRAN:
4500 			case TRANCOUNT:
4501 			case CONTROL:
4502 			case CONCAT:
4503 			case TAKE:
4504 			case OWNERSHIP:
4505 			case DEFINITION:
4506 			case APPLICATION:
4507 			case ASSEMBLY:
4508 			case SYMMETRIC:
4509 			case ASYMMETRIC:
4510 			case SERVER:
4511 			case RECEIVE:
4512 			case CHANGE:
4513 			case TRACE:
4514 			case TRACKING:
4515 			case RESOURCES:
4516 			case SETTINGS:
4517 			case STATE:
4518 			case AVAILABILITY:
4519 			case CREDENTIAL:
4520 			case ENDPOINT:
4521 			case EVENT:
4522 			case NOTIFICATION:
4523 			case LINKED:
4524 			case AUDIT:
4525 			case DDL:
4526 			case XML:
4527 			case IMPERSONATE:
4528 			case SECURABLES:
4529 			case AUTHENTICATE:
4530 			case EXTERNAL:
4531 			case ACCESS:
4532 			case ADMINISTER:
4533 			case BULK:
4534 			case OPERATIONS:
4535 			case UNSAFE:
4536 			case SHUTDOWN:
4537 			case SCOPED:
4538 			case CONFIGURATION:
4539 			case DATASPACE:
4540 			case SERVICE:
4541 			case CERTIFICATE:
4542 			case CONTRACT:
4543 			case ENCRYPTION:
4544 			case MASTER:
4545 			case DATA:
4546 			case SOURCE:
4547 			case FILE:
4548 			case FORMAT:
4549 			case LIBRARY:
4550 			case FULLTEXT:
4551 			case MASK:
4552 			case UNMASK:
4553 			case MESSAGE:
4554 			case REMOTE:
4555 			case BINDING:
4556 			case ROUTE:
4557 			case SECURITY:
4558 			case POLICY:
4559 			case AGGREGATE:
4560 			case QUEUE:
4561 			case RULE:
4562 			case SYNONYM:
4563 			case COLLECTION:
4564 			case SCRIPT:
4565 			case KILL:
4566 			case BACKUP:
4567 			case LOG:
4568 			case SHOWPLAN:
4569 			case SUBSCRIBE:
4570 			case QUERY:
4571 			case NOTIFICATIONS:
4572 			case CHECKPOINT:
4573 			case SEQUENCE:
4574 			case ABORT_AFTER_WAIT:
4575 			case ALLOW_PAGE_LOCKS:
4576 			case ALLOW_ROW_LOCKS:
4577 			case ALL_SPARSE_COLUMNS:
4578 			case BUCKET_COUNT:
4579 			case COLUMNSTORE_ARCHIVE:
4580 			case COLUMN_ENCRYPTION_KEY:
4581 			case COLUMN_SET:
4582 			case COMPRESSION_DELAY:
4583 			case DATABASE_DEAULT:
4584 			case DATA_COMPRESSION:
4585 			case DATA_CONSISTENCY_CHECK:
4586 			case ENCRYPTION_TYPE:
4587 			case SYSTEM_TIME:
4588 			case SYSTEM_VERSIONING:
4589 			case TEXTIMAGE_ON:
4590 			case WAIT_AT_LOW_PRIORITY:
4591 			case STATISTICS_INCREMENTAL:
4592 			case STATISTICS_NORECOMPUTE:
4593 			case ROUND_ROBIN:
4594 			case SCHEMA_AND_DATA:
4595 			case SCHEMA_ONLY:
4596 			case SORT_IN_TEMPDB:
4597 			case IGNORE_DUP_KEY:
4598 			case IMPLICIT_TRANSACTIONS:
4599 			case MAX_DURATION:
4600 			case MEMORY_OPTIMIZED:
4601 			case MIGRATION_STATE:
4602 			case PAD_INDEX:
4603 			case REMOTE_DATA_ARCHIVE:
4604 			case FILESTREAM_ON:
4605 			case FILETABLE_COLLATE_FILENAME:
4606 			case FILETABLE_DIRECTORY:
4607 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
4608 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
4609 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
4610 			case FILTER_PREDICATE:
4611 			case HISTORY_RETENTION_PERIOD:
4612 			case HISTORY_TABLE:
4613 			case LOCK_ESCALATION:
4614 			case DROP_EXISTING:
4615 			case ROW_NUMBER:
4616 			case FIRST:
4617 			case DATETIME2:
4618 			case OUTPUT:
4619 			case INSERTED:
4620 			case DELETED:
4621 			case FILENAME:
4622 			case SIZE:
4623 			case MAXSIZE:
4624 			case FILEGROWTH:
4625 			case UNLIMITED:
4626 			case KB:
4627 			case MB:
4628 			case GB:
4629 			case TB:
4630 			case CONTAINS:
4631 			case MEMORY_OPTIMIZED_DATA:
4632 			case FILEGROUP:
4633 			case NON_TRANSACTED_ACCESS:
4634 			case DB_CHAINING:
4635 			case TRUSTWORTHY:
4636 			case FORWARD_ONLY:
4637 			case KEYSET:
4638 			case FAST_FORWARD:
4639 			case SCROLL_LOCKS:
4640 			case OPTIMISTIC:
4641 			case TYPE_WARNING:
4642 			case SCHEMABINDING:
4643 			case CALLER:
4644 			case OWNER:
4645 			case SNAPSHOT:
4646 			case REPEATABLE:
4647 			case SERIALIZABLE:
4648 			case NATIVE_COMPILATION:
4649 			case VIEW_METADATA:
4650 			case INSTEAD:
4651 			case APPEND:
4652 			case INCREMENT:
4653 			case CACHE:
4654 			case MINVALUE:
4655 			case MAXVALUE:
4656 			case RESTART:
4657 			case LOB_COMPACTION:
4658 			case COMPRESS_ALL_ROW_GROUPS:
4659 			case REORGANIZE:
4660 			case RESUME:
4661 			case PAUSE:
4662 			case ABORT:
4663 			case ACCELERATED_DATABASE_RECOVERY:
4664 			case PERSISTENT_VERSION_STORE_FILEGROUP:
4665 			case IMMEDIATE:
4666 			case NO_WAIT:
4667 			case TARGET_RECOVERY_TIME:
4668 			case SECONDS:
4669 			case HONOR_BROKER_PRIORITY:
4670 			case ERROR_BROKER_CONVERSATIONS:
4671 			case NEW_BROKER:
4672 			case DISABLE_BROKER:
4673 			case ENABLE_BROKER:
4674 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
4675 			case READ_COMMITTED_SNAPSHOT:
4676 			case ALLOW_SNAPSHOT_ISOLATION:
4677 			case RECURSIVE_TRIGGERS:
4678 			case QUOTED_IDENTIFIER:
4679 			case NUMERIC_ROUNDABORT:
4680 			case CONCAT_NULL_YIELDS_NULL:
4681 			case COMPATIBILITY_LEVEL:
4682 			case ARITHABORT:
4683 			case ANSI_WARNINGS:
4684 			case ANSI_PADDING:
4685 			case ANSI_NULLS:
4686 			case ANSI_NULL_DEFAULT:
4687 			case PAGE_VERIFY:
4688 			case CHECKSUM:
4689 			case TORN_PAGE_DETECTION:
4690 			case BULK_LOGGED:
4691 			case RECOVERY:
4692 			case TOTAL_EXECUTION_CPU_TIME_MS:
4693 			case TOTAL_COMPILE_CPU_TIME_MS:
4694 			case STALE_CAPTURE_POLICY_THRESHOLD:
4695 			case EXECUTION_COUNT:
4696 			case QUERY_CAPTURE_POLICY:
4697 			case WAIT_STATS_CAPTURE_MODE:
4698 			case MAX_PLANS_PER_QUERY:
4699 			case QUERY_CAPTURE_MODE:
4700 			case SIZE_BASED_CLEANUP_MODE:
4701 			case INTERVAL_LENGTH_MINUTES:
4702 			case MAX_STORAGE_SIZE_MB:
4703 			case DATA_FLUSH_INTERVAL_SECONDS:
4704 			case CLEANUP_POLICY:
4705 			case CUSTOM:
4706 			case STALE_QUERY_THRESHOLD_DAYS:
4707 			case OPERATION_MODE:
4708 			case QUERY_STORE:
4709 			case CURSOR_DEFAULT:
4710 			case GLOBAL:
4711 			case CURSOR_CLOSE_ON_COMMIT:
4712 			case HOURS:
4713 			case CHANGE_RETENTION:
4714 			case AUTO_CLEANUP:
4715 			case CHANGE_TRACKING:
4716 			case AUTOMATIC_TUNING:
4717 			case FORCE_LAST_GOOD_PLAN:
4718 			case AUTO_UPDATE_STATISTICS_ASYNC:
4719 			case AUTO_UPDATE_STATISTICS:
4720 			case AUTO_SHRINK:
4721 			case AUTO_CREATE_STATISTICS:
4722 			case INCREMENTAL:
4723 			case AUTO_CLOSE:
4724 			case DATA_RETENTION:
4725 			case TEMPORAL_HISTORY_RETENTION:
4726 			case EDITION:
4727 			case MIXED_PAGE_ALLOCATION:
4728 			case DISABLED:
4729 			case ALLOWED:
4730 			case HADR:
4731 			case MULTI_USER:
4732 			case RESTRICTED_USER:
4733 			case SINGLE_USER:
4734 			case OFFLINE:
4735 			case EMERGENCY:
4736 			case SUSPEND:
4737 			case DATE_CORRELATION_OPTIMIZATION:
4738 			case ELASTIC_POOL:
4739 			case SERVICE_OBJECTIVE:
4740 			case DATABASE_NAME:
4741 			case ALLOW_CONNECTIONS:
4742 			case GEO:
4743 			case NAMED:
4744 			case DATEFIRST:
4745 			case BACKUP_STORAGE_REDUNDANCY:
4746 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
4747 			case SECONDARY:
4748 			case FAILOVER:
4749 			case DEFAULT_FULLTEXT_LANGUAGE:
4750 			case DEFAULT_LANGUAGE:
4751 			case INLINE:
4752 			case NESTED_TRIGGERS:
4753 			case TRANSFORM_NOISE_WORDS:
4754 			case TWO_DIGIT_YEAR_CUTOFF:
4755 			case PERSISTENT_LOG_BUFFER:
4756 			case DIRECTORY_NAME:
4757 			case DATEFORMAT:
4758 			case DELAYED_DURABILITY:
4759 			case AUTHORIZATION:
4760 			case TRANSFER:
4761 			case PROVIDER:
4762 			case SEARCH:
4763 			case MEMBER:
4764 			case IDENTIFIER_:
4765 			case DELIMITED_IDENTIFIER_:
4766 				{
4767 				setState(1252);
4768 				name();
4769 				}
4770 				break;
4771 			case DOLLAR_:
4772 				{
4773 				setState(1253);
4774 				scriptVariableName();
4775 				}
4776 				break;
4777 			default:
4778 				throw new NoViableAltException(this);
4779 			}
4780 			}
4781 		}
4782 		catch (RecognitionException re) {
4783 			_localctx.exception = re;
4784 			_errHandler.reportError(this, re);
4785 			_errHandler.recover(this, re);
4786 		}
4787 		finally {
4788 			exitRule();
4789 		}
4790 		return _localctx;
4791 	}
4792 
4793 	public static class ScriptVariableNameContext extends ParserRuleContext {
4794 		public TerminalNode DOLLAR_() { return getToken(SQLServerStatementParser.DOLLAR_, 0); }
4795 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4796 		public NameContext name() {
4797 			return getRuleContext(NameContext.class,0);
4798 		}
4799 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4800 		public ScriptVariableNameContext(ParserRuleContext parent, int invokingState) {
4801 			super(parent, invokingState);
4802 		}
4803 		@Override public int getRuleIndex() { return RULE_scriptVariableName; }
4804 		@Override
4805 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4806 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitScriptVariableName(this);
4807 			else return visitor.visitChildren(this);
4808 		}
4809 	}
4810 
4811 	public final ScriptVariableNameContext scriptVariableName() throws RecognitionException {
4812 		ScriptVariableNameContext _localctx = new ScriptVariableNameContext(_ctx, getState());
4813 		enterRule(_localctx, 74, RULE_scriptVariableName);
4814 		try {
4815 			enterOuterAlt(_localctx, 1);
4816 			{
4817 			setState(1256);
4818 			match(DOLLAR_);
4819 			setState(1257);
4820 			match(LP_);
4821 			setState(1258);
4822 			name();
4823 			setState(1259);
4824 			match(RP_);
4825 			}
4826 		}
4827 		catch (RecognitionException re) {
4828 			_localctx.exception = re;
4829 			_errHandler.reportError(this, re);
4830 			_errHandler.recover(this, re);
4831 		}
4832 		finally {
4833 			exitRule();
4834 		}
4835 		return _localctx;
4836 	}
4837 
4838 	public static class OwnerContext extends ParserRuleContext {
4839 		public IdentifierContext identifier() {
4840 			return getRuleContext(IdentifierContext.class,0);
4841 		}
4842 		public OwnerContext(ParserRuleContext parent, int invokingState) {
4843 			super(parent, invokingState);
4844 		}
4845 		@Override public int getRuleIndex() { return RULE_owner; }
4846 		@Override
4847 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4848 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOwner(this);
4849 			else return visitor.visitChildren(this);
4850 		}
4851 	}
4852 
4853 	public final OwnerContext owner() throws RecognitionException {
4854 		OwnerContext _localctx = new OwnerContext(_ctx, getState());
4855 		enterRule(_localctx, 76, RULE_owner);
4856 		try {
4857 			enterOuterAlt(_localctx, 1);
4858 			{
4859 			setState(1261);
4860 			identifier();
4861 			}
4862 		}
4863 		catch (RecognitionException re) {
4864 			_localctx.exception = re;
4865 			_errHandler.reportError(this, re);
4866 			_errHandler.recover(this, re);
4867 		}
4868 		finally {
4869 			exitRule();
4870 		}
4871 		return _localctx;
4872 	}
4873 
4874 	public static class NameContext extends ParserRuleContext {
4875 		public IdentifierContext identifier() {
4876 			return getRuleContext(IdentifierContext.class,0);
4877 		}
4878 		public NameContext(ParserRuleContext parent, int invokingState) {
4879 			super(parent, invokingState);
4880 		}
4881 		@Override public int getRuleIndex() { return RULE_name; }
4882 		@Override
4883 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4884 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitName(this);
4885 			else return visitor.visitChildren(this);
4886 		}
4887 	}
4888 
4889 	public final NameContext name() throws RecognitionException {
4890 		NameContext _localctx = new NameContext(_ctx, getState());
4891 		enterRule(_localctx, 78, RULE_name);
4892 		try {
4893 			enterOuterAlt(_localctx, 1);
4894 			{
4895 			setState(1263);
4896 			identifier();
4897 			}
4898 		}
4899 		catch (RecognitionException re) {
4900 			_localctx.exception = re;
4901 			_errHandler.reportError(this, re);
4902 			_errHandler.recover(this, re);
4903 		}
4904 		finally {
4905 			exitRule();
4906 		}
4907 		return _localctx;
4908 	}
4909 
4910 	public static class ColumnNamesContext extends ParserRuleContext {
4911 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4912 		public List<ColumnNameContext> columnName() {
4913 			return getRuleContexts(ColumnNameContext.class);
4914 		}
4915 		public ColumnNameContext columnName(int i) {
4916 			return getRuleContext(ColumnNameContext.class,i);
4917 		}
4918 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4919 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
4920 		public TerminalNode COMMA_(int i) {
4921 			return getToken(SQLServerStatementParser.COMMA_, i);
4922 		}
4923 		public ColumnNamesContext(ParserRuleContext parent, int invokingState) {
4924 			super(parent, invokingState);
4925 		}
4926 		@Override public int getRuleIndex() { return RULE_columnNames; }
4927 		@Override
4928 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4929 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNames(this);
4930 			else return visitor.visitChildren(this);
4931 		}
4932 	}
4933 
4934 	public final ColumnNamesContext columnNames() throws RecognitionException {
4935 		ColumnNamesContext _localctx = new ColumnNamesContext(_ctx, getState());
4936 		enterRule(_localctx, 80, RULE_columnNames);
4937 		int _la;
4938 		try {
4939 			enterOuterAlt(_localctx, 1);
4940 			{
4941 			setState(1265);
4942 			match(LP_);
4943 			setState(1266);
4944 			columnName();
4945 			setState(1271);
4946 			_errHandler.sync(this);
4947 			_la = _input.LA(1);
4948 			while (_la==COMMA_) {
4949 				{
4950 				{
4951 				setState(1267);
4952 				match(COMMA_);
4953 				setState(1268);
4954 				columnName();
4955 				}
4956 				}
4957 				setState(1273);
4958 				_errHandler.sync(this);
4959 				_la = _input.LA(1);
4960 			}
4961 			setState(1274);
4962 			match(RP_);
4963 			}
4964 		}
4965 		catch (RecognitionException re) {
4966 			_localctx.exception = re;
4967 			_errHandler.reportError(this, re);
4968 			_errHandler.recover(this, re);
4969 		}
4970 		finally {
4971 			exitRule();
4972 		}
4973 		return _localctx;
4974 	}
4975 
4976 	public static class ColumnNamesWithSortContext extends ParserRuleContext {
4977 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4978 		public List<ColumnNameWithSortContext> columnNameWithSort() {
4979 			return getRuleContexts(ColumnNameWithSortContext.class);
4980 		}
4981 		public ColumnNameWithSortContext columnNameWithSort(int i) {
4982 			return getRuleContext(ColumnNameWithSortContext.class,i);
4983 		}
4984 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4985 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
4986 		public TerminalNode COMMA_(int i) {
4987 			return getToken(SQLServerStatementParser.COMMA_, i);
4988 		}
4989 		public ColumnNamesWithSortContext(ParserRuleContext parent, int invokingState) {
4990 			super(parent, invokingState);
4991 		}
4992 		@Override public int getRuleIndex() { return RULE_columnNamesWithSort; }
4993 		@Override
4994 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4995 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNamesWithSort(this);
4996 			else return visitor.visitChildren(this);
4997 		}
4998 	}
4999 
5000 	public final ColumnNamesWithSortContext columnNamesWithSort() throws RecognitionException {
5001 		ColumnNamesWithSortContext _localctx = new ColumnNamesWithSortContext(_ctx, getState());
5002 		enterRule(_localctx, 82, RULE_columnNamesWithSort);
5003 		int _la;
5004 		try {
5005 			enterOuterAlt(_localctx, 1);
5006 			{
5007 			setState(1276);
5008 			match(LP_);
5009 			setState(1277);
5010 			columnNameWithSort();
5011 			setState(1282);
5012 			_errHandler.sync(this);
5013 			_la = _input.LA(1);
5014 			while (_la==COMMA_) {
5015 				{
5016 				{
5017 				setState(1278);
5018 				match(COMMA_);
5019 				setState(1279);
5020 				columnNameWithSort();
5021 				}
5022 				}
5023 				setState(1284);
5024 				_errHandler.sync(this);
5025 				_la = _input.LA(1);
5026 			}
5027 			setState(1285);
5028 			match(RP_);
5029 			}
5030 		}
5031 		catch (RecognitionException re) {
5032 			_localctx.exception = re;
5033 			_errHandler.reportError(this, re);
5034 			_errHandler.recover(this, re);
5035 		}
5036 		finally {
5037 			exitRule();
5038 		}
5039 		return _localctx;
5040 	}
5041 
5042 	public static class TableNamesContext extends ParserRuleContext {
5043 		public List<TableNameContext> tableName() {
5044 			return getRuleContexts(TableNameContext.class);
5045 		}
5046 		public TableNameContext tableName(int i) {
5047 			return getRuleContext(TableNameContext.class,i);
5048 		}
5049 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5050 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
5051 		public TerminalNode COMMA_(int i) {
5052 			return getToken(SQLServerStatementParser.COMMA_, i);
5053 		}
5054 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5055 		public TableNamesContext(ParserRuleContext parent, int invokingState) {
5056 			super(parent, invokingState);
5057 		}
5058 		@Override public int getRuleIndex() { return RULE_tableNames; }
5059 		@Override
5060 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5061 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableNames(this);
5062 			else return visitor.visitChildren(this);
5063 		}
5064 	}
5065 
5066 	public final TableNamesContext tableNames() throws RecognitionException {
5067 		TableNamesContext _localctx = new TableNamesContext(_ctx, getState());
5068 		enterRule(_localctx, 84, RULE_tableNames);
5069 		int _la;
5070 		try {
5071 			enterOuterAlt(_localctx, 1);
5072 			{
5073 			setState(1288);
5074 			_errHandler.sync(this);
5075 			_la = _input.LA(1);
5076 			if (_la==LP_) {
5077 				{
5078 				setState(1287);
5079 				match(LP_);
5080 				}
5081 			}
5082 
5083 			setState(1290);
5084 			tableName();
5085 			setState(1295);
5086 			_errHandler.sync(this);
5087 			_la = _input.LA(1);
5088 			while (_la==COMMA_) {
5089 				{
5090 				{
5091 				setState(1291);
5092 				match(COMMA_);
5093 				setState(1292);
5094 				tableName();
5095 				}
5096 				}
5097 				setState(1297);
5098 				_errHandler.sync(this);
5099 				_la = _input.LA(1);
5100 			}
5101 			setState(1299);
5102 			_errHandler.sync(this);
5103 			_la = _input.LA(1);
5104 			if (_la==RP_) {
5105 				{
5106 				setState(1298);
5107 				match(RP_);
5108 				}
5109 			}
5110 
5111 			}
5112 		}
5113 		catch (RecognitionException re) {
5114 			_localctx.exception = re;
5115 			_errHandler.reportError(this, re);
5116 			_errHandler.recover(this, re);
5117 		}
5118 		finally {
5119 			exitRule();
5120 		}
5121 		return _localctx;
5122 	}
5123 
5124 	public static class IndexNameContext extends ParserRuleContext {
5125 		public IdentifierContext identifier() {
5126 			return getRuleContext(IdentifierContext.class,0);
5127 		}
5128 		public IndexNameContext(ParserRuleContext parent, int invokingState) {
5129 			super(parent, invokingState);
5130 		}
5131 		@Override public int getRuleIndex() { return RULE_indexName; }
5132 		@Override
5133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexName(this);
5135 			else return visitor.visitChildren(this);
5136 		}
5137 	}
5138 
5139 	public final IndexNameContext indexName() throws RecognitionException {
5140 		IndexNameContext _localctx = new IndexNameContext(_ctx, getState());
5141 		enterRule(_localctx, 86, RULE_indexName);
5142 		try {
5143 			enterOuterAlt(_localctx, 1);
5144 			{
5145 			setState(1301);
5146 			identifier();
5147 			}
5148 		}
5149 		catch (RecognitionException re) {
5150 			_localctx.exception = re;
5151 			_errHandler.reportError(this, re);
5152 			_errHandler.recover(this, re);
5153 		}
5154 		finally {
5155 			exitRule();
5156 		}
5157 		return _localctx;
5158 	}
5159 
5160 	public static class ConstraintNameContext extends ParserRuleContext {
5161 		public IdentifierContext identifier() {
5162 			return getRuleContext(IdentifierContext.class,0);
5163 		}
5164 		public ConstraintNameContext(ParserRuleContext parent, int invokingState) {
5165 			super(parent, invokingState);
5166 		}
5167 		@Override public int getRuleIndex() { return RULE_constraintName; }
5168 		@Override
5169 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5170 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConstraintName(this);
5171 			else return visitor.visitChildren(this);
5172 		}
5173 	}
5174 
5175 	public final ConstraintNameContext constraintName() throws RecognitionException {
5176 		ConstraintNameContext _localctx = new ConstraintNameContext(_ctx, getState());
5177 		enterRule(_localctx, 88, RULE_constraintName);
5178 		try {
5179 			enterOuterAlt(_localctx, 1);
5180 			{
5181 			setState(1303);
5182 			identifier();
5183 			}
5184 		}
5185 		catch (RecognitionException re) {
5186 			_localctx.exception = re;
5187 			_errHandler.reportError(this, re);
5188 			_errHandler.recover(this, re);
5189 		}
5190 		finally {
5191 			exitRule();
5192 		}
5193 		return _localctx;
5194 	}
5195 
5196 	public static class CollationNameContext extends ParserRuleContext {
5197 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
5198 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
5199 		public CollationNameContext(ParserRuleContext parent, int invokingState) {
5200 			super(parent, invokingState);
5201 		}
5202 		@Override public int getRuleIndex() { return RULE_collationName; }
5203 		@Override
5204 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5205 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCollationName(this);
5206 			else return visitor.visitChildren(this);
5207 		}
5208 	}
5209 
5210 	public final CollationNameContext collationName() throws RecognitionException {
5211 		CollationNameContext _localctx = new CollationNameContext(_ctx, getState());
5212 		enterRule(_localctx, 90, RULE_collationName);
5213 		int _la;
5214 		try {
5215 			enterOuterAlt(_localctx, 1);
5216 			{
5217 			setState(1305);
5218 			_la = _input.LA(1);
5219 			if ( !(_la==IDENTIFIER_ || _la==STRING_) ) {
5220 			_errHandler.recoverInline(this);
5221 			}
5222 			else {
5223 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5224 				_errHandler.reportMatch(this);
5225 				consume();
5226 			}
5227 			}
5228 		}
5229 		catch (RecognitionException re) {
5230 			_localctx.exception = re;
5231 			_errHandler.reportError(this, re);
5232 			_errHandler.recover(this, re);
5233 		}
5234 		finally {
5235 			exitRule();
5236 		}
5237 		return _localctx;
5238 	}
5239 
5240 	public static class AliasContext extends ParserRuleContext {
5241 		public IdentifierContext identifier() {
5242 			return getRuleContext(IdentifierContext.class,0);
5243 		}
5244 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
5245 		public AliasContext(ParserRuleContext parent, int invokingState) {
5246 			super(parent, invokingState);
5247 		}
5248 		@Override public int getRuleIndex() { return RULE_alias; }
5249 		@Override
5250 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5251 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlias(this);
5252 			else return visitor.visitChildren(this);
5253 		}
5254 	}
5255 
5256 	public final AliasContext alias() throws RecognitionException {
5257 		AliasContext _localctx = new AliasContext(_ctx, getState());
5258 		enterRule(_localctx, 92, RULE_alias);
5259 		try {
5260 			setState(1309);
5261 			_errHandler.sync(this);
5262 			switch (_input.LA(1)) {
5263 			case TRUNCATE:
5264 			case SCHEMA:
5265 			case COLUMNS:
5266 			case PRECISION:
5267 			case FUNCTION:
5268 			case TRIGGER:
5269 			case CAST:
5270 			case SUBSTRING:
5271 			case OFF:
5272 			case GROUP:
5273 			case LIMIT:
5274 			case OFFSET:
5275 			case SAVEPOINT:
5276 			case BOOLEAN:
5277 			case ARRAY:
5278 			case DATE:
5279 			case LOCALTIME:
5280 			case LOCALTIMESTAMP:
5281 			case QUARTER:
5282 			case MONTH:
5283 			case WEEK:
5284 			case DAY:
5285 			case SECOND:
5286 			case MICROSECOND:
5287 			case MAX:
5288 			case MIN:
5289 			case SUM:
5290 			case COUNT:
5291 			case AVG:
5292 			case ENABLE:
5293 			case DISABLE:
5294 			case INSTANCE:
5295 			case DO:
5296 			case DEFINER:
5297 			case SQL:
5298 			case CASCADED:
5299 			case LOCAL:
5300 			case NEXT:
5301 			case NAME:
5302 			case INTEGER:
5303 			case TYPE:
5304 			case TEXT:
5305 			case VIEWS:
5306 			case READ_ONLY:
5307 			case DATABASE:
5308 			case RETURNS:
5309 			case DATEPART:
5310 			case PASSWORD:
5311 			case BINARY:
5312 			case HIDDEN_:
5313 			case MOD:
5314 			case PARTITION:
5315 			case PARTITIONS:
5316 			case TOP:
5317 			case ROW:
5318 			case ROWS:
5319 			case XOR:
5320 			case ALWAYS:
5321 			case ROLE:
5322 			case START:
5323 			case ALGORITHM:
5324 			case AUTO:
5325 			case BLOCKERS:
5326 			case CLUSTERED:
5327 			case NONCLUSTERED:
5328 			case COLUMNSTORE:
5329 			case CONTENT:
5330 			case YEARS:
5331 			case MONTHS:
5332 			case WEEKS:
5333 			case DAYS:
5334 			case MINUTES:
5335 			case DENY:
5336 			case DETERMINISTIC:
5337 			case DISTRIBUTION:
5338 			case DOCUMENT:
5339 			case DURABILITY:
5340 			case ENCRYPTED:
5341 			case FILESTREAM:
5342 			case FILETABLE:
5343 			case FILLFACTOR:
5344 			case FOLLOWING:
5345 			case HASH:
5346 			case HEAP:
5347 			case INBOUND:
5348 			case OUTBOUND:
5349 			case UNBOUNDED:
5350 			case INFINITE:
5351 			case LOGIN:
5352 			case MASKED:
5353 			case MAXDOP:
5354 			case MOVE:
5355 			case NOCHECK:
5356 			case OBJECT:
5357 			case ONLINE:
5358 			case OVER:
5359 			case PAGE:
5360 			case PAUSED:
5361 			case PERIOD:
5362 			case PERSISTED:
5363 			case PRECEDING:
5364 			case RANDOMIZED:
5365 			case RANGE:
5366 			case REBUILD:
5367 			case REPLICATE:
5368 			case REPLICATION:
5369 			case RESUMABLE:
5370 			case ROWGUIDCOL:
5371 			case SAVE:
5372 			case SELF:
5373 			case SPARSE:
5374 			case SWITCH:
5375 			case TRAN:
5376 			case TRANCOUNT:
5377 			case CONTROL:
5378 			case CONCAT:
5379 			case TAKE:
5380 			case OWNERSHIP:
5381 			case DEFINITION:
5382 			case APPLICATION:
5383 			case ASSEMBLY:
5384 			case SYMMETRIC:
5385 			case ASYMMETRIC:
5386 			case SERVER:
5387 			case RECEIVE:
5388 			case CHANGE:
5389 			case TRACE:
5390 			case TRACKING:
5391 			case RESOURCES:
5392 			case SETTINGS:
5393 			case STATE:
5394 			case AVAILABILITY:
5395 			case CREDENTIAL:
5396 			case ENDPOINT:
5397 			case EVENT:
5398 			case NOTIFICATION:
5399 			case LINKED:
5400 			case AUDIT:
5401 			case DDL:
5402 			case XML:
5403 			case IMPERSONATE:
5404 			case SECURABLES:
5405 			case AUTHENTICATE:
5406 			case EXTERNAL:
5407 			case ACCESS:
5408 			case ADMINISTER:
5409 			case BULK:
5410 			case OPERATIONS:
5411 			case UNSAFE:
5412 			case SHUTDOWN:
5413 			case SCOPED:
5414 			case CONFIGURATION:
5415 			case DATASPACE:
5416 			case SERVICE:
5417 			case CERTIFICATE:
5418 			case CONTRACT:
5419 			case ENCRYPTION:
5420 			case MASTER:
5421 			case DATA:
5422 			case SOURCE:
5423 			case FILE:
5424 			case FORMAT:
5425 			case LIBRARY:
5426 			case FULLTEXT:
5427 			case MASK:
5428 			case UNMASK:
5429 			case MESSAGE:
5430 			case REMOTE:
5431 			case BINDING:
5432 			case ROUTE:
5433 			case SECURITY:
5434 			case POLICY:
5435 			case AGGREGATE:
5436 			case QUEUE:
5437 			case RULE:
5438 			case SYNONYM:
5439 			case COLLECTION:
5440 			case SCRIPT:
5441 			case KILL:
5442 			case BACKUP:
5443 			case LOG:
5444 			case SHOWPLAN:
5445 			case SUBSCRIBE:
5446 			case QUERY:
5447 			case NOTIFICATIONS:
5448 			case CHECKPOINT:
5449 			case SEQUENCE:
5450 			case ABORT_AFTER_WAIT:
5451 			case ALLOW_PAGE_LOCKS:
5452 			case ALLOW_ROW_LOCKS:
5453 			case ALL_SPARSE_COLUMNS:
5454 			case BUCKET_COUNT:
5455 			case COLUMNSTORE_ARCHIVE:
5456 			case COLUMN_ENCRYPTION_KEY:
5457 			case COLUMN_SET:
5458 			case COMPRESSION_DELAY:
5459 			case DATABASE_DEAULT:
5460 			case DATA_COMPRESSION:
5461 			case DATA_CONSISTENCY_CHECK:
5462 			case ENCRYPTION_TYPE:
5463 			case SYSTEM_TIME:
5464 			case SYSTEM_VERSIONING:
5465 			case TEXTIMAGE_ON:
5466 			case WAIT_AT_LOW_PRIORITY:
5467 			case STATISTICS_INCREMENTAL:
5468 			case STATISTICS_NORECOMPUTE:
5469 			case ROUND_ROBIN:
5470 			case SCHEMA_AND_DATA:
5471 			case SCHEMA_ONLY:
5472 			case SORT_IN_TEMPDB:
5473 			case IGNORE_DUP_KEY:
5474 			case IMPLICIT_TRANSACTIONS:
5475 			case MAX_DURATION:
5476 			case MEMORY_OPTIMIZED:
5477 			case MIGRATION_STATE:
5478 			case PAD_INDEX:
5479 			case REMOTE_DATA_ARCHIVE:
5480 			case FILESTREAM_ON:
5481 			case FILETABLE_COLLATE_FILENAME:
5482 			case FILETABLE_DIRECTORY:
5483 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
5484 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
5485 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
5486 			case FILTER_PREDICATE:
5487 			case HISTORY_RETENTION_PERIOD:
5488 			case HISTORY_TABLE:
5489 			case LOCK_ESCALATION:
5490 			case DROP_EXISTING:
5491 			case ROW_NUMBER:
5492 			case FIRST:
5493 			case DATETIME2:
5494 			case OUTPUT:
5495 			case INSERTED:
5496 			case DELETED:
5497 			case FILENAME:
5498 			case SIZE:
5499 			case MAXSIZE:
5500 			case FILEGROWTH:
5501 			case UNLIMITED:
5502 			case KB:
5503 			case MB:
5504 			case GB:
5505 			case TB:
5506 			case CONTAINS:
5507 			case MEMORY_OPTIMIZED_DATA:
5508 			case FILEGROUP:
5509 			case NON_TRANSACTED_ACCESS:
5510 			case DB_CHAINING:
5511 			case TRUSTWORTHY:
5512 			case FORWARD_ONLY:
5513 			case KEYSET:
5514 			case FAST_FORWARD:
5515 			case SCROLL_LOCKS:
5516 			case OPTIMISTIC:
5517 			case TYPE_WARNING:
5518 			case SCHEMABINDING:
5519 			case CALLER:
5520 			case OWNER:
5521 			case SNAPSHOT:
5522 			case REPEATABLE:
5523 			case SERIALIZABLE:
5524 			case NATIVE_COMPILATION:
5525 			case VIEW_METADATA:
5526 			case INSTEAD:
5527 			case APPEND:
5528 			case INCREMENT:
5529 			case CACHE:
5530 			case MINVALUE:
5531 			case MAXVALUE:
5532 			case RESTART:
5533 			case LOB_COMPACTION:
5534 			case COMPRESS_ALL_ROW_GROUPS:
5535 			case REORGANIZE:
5536 			case RESUME:
5537 			case PAUSE:
5538 			case ABORT:
5539 			case ACCELERATED_DATABASE_RECOVERY:
5540 			case PERSISTENT_VERSION_STORE_FILEGROUP:
5541 			case IMMEDIATE:
5542 			case NO_WAIT:
5543 			case TARGET_RECOVERY_TIME:
5544 			case SECONDS:
5545 			case HONOR_BROKER_PRIORITY:
5546 			case ERROR_BROKER_CONVERSATIONS:
5547 			case NEW_BROKER:
5548 			case DISABLE_BROKER:
5549 			case ENABLE_BROKER:
5550 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
5551 			case READ_COMMITTED_SNAPSHOT:
5552 			case ALLOW_SNAPSHOT_ISOLATION:
5553 			case RECURSIVE_TRIGGERS:
5554 			case QUOTED_IDENTIFIER:
5555 			case NUMERIC_ROUNDABORT:
5556 			case CONCAT_NULL_YIELDS_NULL:
5557 			case COMPATIBILITY_LEVEL:
5558 			case ARITHABORT:
5559 			case ANSI_WARNINGS:
5560 			case ANSI_PADDING:
5561 			case ANSI_NULLS:
5562 			case ANSI_NULL_DEFAULT:
5563 			case PAGE_VERIFY:
5564 			case CHECKSUM:
5565 			case TORN_PAGE_DETECTION:
5566 			case BULK_LOGGED:
5567 			case RECOVERY:
5568 			case TOTAL_EXECUTION_CPU_TIME_MS:
5569 			case TOTAL_COMPILE_CPU_TIME_MS:
5570 			case STALE_CAPTURE_POLICY_THRESHOLD:
5571 			case EXECUTION_COUNT:
5572 			case QUERY_CAPTURE_POLICY:
5573 			case WAIT_STATS_CAPTURE_MODE:
5574 			case MAX_PLANS_PER_QUERY:
5575 			case QUERY_CAPTURE_MODE:
5576 			case SIZE_BASED_CLEANUP_MODE:
5577 			case INTERVAL_LENGTH_MINUTES:
5578 			case MAX_STORAGE_SIZE_MB:
5579 			case DATA_FLUSH_INTERVAL_SECONDS:
5580 			case CLEANUP_POLICY:
5581 			case CUSTOM:
5582 			case STALE_QUERY_THRESHOLD_DAYS:
5583 			case OPERATION_MODE:
5584 			case QUERY_STORE:
5585 			case CURSOR_DEFAULT:
5586 			case GLOBAL:
5587 			case CURSOR_CLOSE_ON_COMMIT:
5588 			case HOURS:
5589 			case CHANGE_RETENTION:
5590 			case AUTO_CLEANUP:
5591 			case CHANGE_TRACKING:
5592 			case AUTOMATIC_TUNING:
5593 			case FORCE_LAST_GOOD_PLAN:
5594 			case AUTO_UPDATE_STATISTICS_ASYNC:
5595 			case AUTO_UPDATE_STATISTICS:
5596 			case AUTO_SHRINK:
5597 			case AUTO_CREATE_STATISTICS:
5598 			case INCREMENTAL:
5599 			case AUTO_CLOSE:
5600 			case DATA_RETENTION:
5601 			case TEMPORAL_HISTORY_RETENTION:
5602 			case EDITION:
5603 			case MIXED_PAGE_ALLOCATION:
5604 			case DISABLED:
5605 			case ALLOWED:
5606 			case HADR:
5607 			case MULTI_USER:
5608 			case RESTRICTED_USER:
5609 			case SINGLE_USER:
5610 			case OFFLINE:
5611 			case EMERGENCY:
5612 			case SUSPEND:
5613 			case DATE_CORRELATION_OPTIMIZATION:
5614 			case ELASTIC_POOL:
5615 			case SERVICE_OBJECTIVE:
5616 			case DATABASE_NAME:
5617 			case ALLOW_CONNECTIONS:
5618 			case GEO:
5619 			case NAMED:
5620 			case DATEFIRST:
5621 			case BACKUP_STORAGE_REDUNDANCY:
5622 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
5623 			case SECONDARY:
5624 			case FAILOVER:
5625 			case DEFAULT_FULLTEXT_LANGUAGE:
5626 			case DEFAULT_LANGUAGE:
5627 			case INLINE:
5628 			case NESTED_TRIGGERS:
5629 			case TRANSFORM_NOISE_WORDS:
5630 			case TWO_DIGIT_YEAR_CUTOFF:
5631 			case PERSISTENT_LOG_BUFFER:
5632 			case DIRECTORY_NAME:
5633 			case DATEFORMAT:
5634 			case DELAYED_DURABILITY:
5635 			case AUTHORIZATION:
5636 			case TRANSFER:
5637 			case PROVIDER:
5638 			case SEARCH:
5639 			case MEMBER:
5640 			case IDENTIFIER_:
5641 			case DELIMITED_IDENTIFIER_:
5642 				enterOuterAlt(_localctx, 1);
5643 				{
5644 				setState(1307);
5645 				identifier();
5646 				}
5647 				break;
5648 			case STRING_:
5649 				enterOuterAlt(_localctx, 2);
5650 				{
5651 				setState(1308);
5652 				match(STRING_);
5653 				}
5654 				break;
5655 			default:
5656 				throw new NoViableAltException(this);
5657 			}
5658 		}
5659 		catch (RecognitionException re) {
5660 			_localctx.exception = re;
5661 			_errHandler.reportError(this, re);
5662 			_errHandler.recover(this, re);
5663 		}
5664 		finally {
5665 			exitRule();
5666 		}
5667 		return _localctx;
5668 	}
5669 
5670 	public static class DataTypeLengthContext extends ParserRuleContext {
5671 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5672 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5673 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
5674 		public TerminalNode NUMBER_(int i) {
5675 			return getToken(SQLServerStatementParser.NUMBER_, i);
5676 		}
5677 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
5678 		public DataTypeLengthContext(ParserRuleContext parent, int invokingState) {
5679 			super(parent, invokingState);
5680 		}
5681 		@Override public int getRuleIndex() { return RULE_dataTypeLength; }
5682 		@Override
5683 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5684 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataTypeLength(this);
5685 			else return visitor.visitChildren(this);
5686 		}
5687 	}
5688 
5689 	public final DataTypeLengthContext dataTypeLength() throws RecognitionException {
5690 		DataTypeLengthContext _localctx = new DataTypeLengthContext(_ctx, getState());
5691 		enterRule(_localctx, 94, RULE_dataTypeLength);
5692 		int _la;
5693 		try {
5694 			enterOuterAlt(_localctx, 1);
5695 			{
5696 			setState(1311);
5697 			match(LP_);
5698 			setState(1317);
5699 			_errHandler.sync(this);
5700 			_la = _input.LA(1);
5701 			if (_la==NUMBER_) {
5702 				{
5703 				setState(1312);
5704 				match(NUMBER_);
5705 				setState(1315);
5706 				_errHandler.sync(this);
5707 				_la = _input.LA(1);
5708 				if (_la==COMMA_) {
5709 					{
5710 					setState(1313);
5711 					match(COMMA_);
5712 					setState(1314);
5713 					match(NUMBER_);
5714 					}
5715 				}
5716 
5717 				}
5718 			}
5719 
5720 			setState(1319);
5721 			match(RP_);
5722 			}
5723 		}
5724 		catch (RecognitionException re) {
5725 			_localctx.exception = re;
5726 			_errHandler.reportError(this, re);
5727 			_errHandler.recover(this, re);
5728 		}
5729 		finally {
5730 			exitRule();
5731 		}
5732 		return _localctx;
5733 	}
5734 
5735 	public static class PrimaryKeyContext extends ParserRuleContext {
5736 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
5737 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
5738 		public PrimaryKeyContext(ParserRuleContext parent, int invokingState) {
5739 			super(parent, invokingState);
5740 		}
5741 		@Override public int getRuleIndex() { return RULE_primaryKey; }
5742 		@Override
5743 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5744 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKey(this);
5745 			else return visitor.visitChildren(this);
5746 		}
5747 	}
5748 
5749 	public final PrimaryKeyContext primaryKey() throws RecognitionException {
5750 		PrimaryKeyContext _localctx = new PrimaryKeyContext(_ctx, getState());
5751 		enterRule(_localctx, 96, RULE_primaryKey);
5752 		int _la;
5753 		try {
5754 			enterOuterAlt(_localctx, 1);
5755 			{
5756 			setState(1322);
5757 			_errHandler.sync(this);
5758 			_la = _input.LA(1);
5759 			if (_la==PRIMARY) {
5760 				{
5761 				setState(1321);
5762 				match(PRIMARY);
5763 				}
5764 			}
5765 
5766 			setState(1324);
5767 			match(KEY);
5768 			}
5769 		}
5770 		catch (RecognitionException re) {
5771 			_localctx.exception = re;
5772 			_errHandler.reportError(this, re);
5773 			_errHandler.recover(this, re);
5774 		}
5775 		finally {
5776 			exitRule();
5777 		}
5778 		return _localctx;
5779 	}
5780 
5781 	public static class ExprContext extends ParserRuleContext {
5782 		public BooleanPrimaryContext booleanPrimary() {
5783 			return getRuleContext(BooleanPrimaryContext.class,0);
5784 		}
5785 		public NotOperatorContext notOperator() {
5786 			return getRuleContext(NotOperatorContext.class,0);
5787 		}
5788 		public List<ExprContext> expr() {
5789 			return getRuleContexts(ExprContext.class);
5790 		}
5791 		public ExprContext expr(int i) {
5792 			return getRuleContext(ExprContext.class,i);
5793 		}
5794 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5795 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5796 		public AndOperatorContext andOperator() {
5797 			return getRuleContext(AndOperatorContext.class,0);
5798 		}
5799 		public OrOperatorContext orOperator() {
5800 			return getRuleContext(OrOperatorContext.class,0);
5801 		}
5802 		public DistinctFromContext distinctFrom() {
5803 			return getRuleContext(DistinctFromContext.class,0);
5804 		}
5805 		public ExprContext(ParserRuleContext parent, int invokingState) {
5806 			super(parent, invokingState);
5807 		}
5808 		@Override public int getRuleIndex() { return RULE_expr; }
5809 		@Override
5810 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5811 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExpr(this);
5812 			else return visitor.visitChildren(this);
5813 		}
5814 	}
5815 
5816 	public final ExprContext expr() throws RecognitionException {
5817 		return expr(0);
5818 	}
5819 
5820 	private ExprContext expr(int _p) throws RecognitionException {
5821 		ParserRuleContext _parentctx = _ctx;
5822 		int _parentState = getState();
5823 		ExprContext _localctx = new ExprContext(_ctx, _parentState);
5824 		ExprContext _prevctx = _localctx;
5825 		int _startState = 98;
5826 		enterRecursionRule(_localctx, 98, RULE_expr, _p);
5827 		try {
5828 			int _alt;
5829 			enterOuterAlt(_localctx, 1);
5830 			{
5831 			setState(1335);
5832 			_errHandler.sync(this);
5833 			switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) {
5834 			case 1:
5835 				{
5836 				setState(1327);
5837 				booleanPrimary(0);
5838 				}
5839 				break;
5840 			case 2:
5841 				{
5842 				setState(1328);
5843 				notOperator();
5844 				setState(1329);
5845 				expr(2);
5846 				}
5847 				break;
5848 			case 3:
5849 				{
5850 				setState(1331);
5851 				match(LP_);
5852 				setState(1332);
5853 				expr(0);
5854 				setState(1333);
5855 				match(RP_);
5856 				}
5857 				break;
5858 			}
5859 			_ctx.stop = _input.LT(-1);
5860 			setState(1351);
5861 			_errHandler.sync(this);
5862 			_alt = getInterpreter().adaptivePredict(_input,43,_ctx);
5863 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
5864 				if ( _alt==1 ) {
5865 					if ( _parseListeners!=null ) triggerExitRuleEvent();
5866 					_prevctx = _localctx;
5867 					{
5868 					setState(1349);
5869 					_errHandler.sync(this);
5870 					switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
5871 					case 1:
5872 						{
5873 						_localctx = new ExprContext(_parentctx, _parentState);
5874 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5875 						setState(1337);
5876 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
5877 						setState(1338);
5878 						andOperator();
5879 						setState(1339);
5880 						expr(6);
5881 						}
5882 						break;
5883 					case 2:
5884 						{
5885 						_localctx = new ExprContext(_parentctx, _parentState);
5886 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5887 						setState(1341);
5888 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
5889 						setState(1342);
5890 						orOperator();
5891 						setState(1343);
5892 						expr(5);
5893 						}
5894 						break;
5895 					case 3:
5896 						{
5897 						_localctx = new ExprContext(_parentctx, _parentState);
5898 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5899 						setState(1345);
5900 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
5901 						setState(1346);
5902 						distinctFrom();
5903 						setState(1347);
5904 						expr(4);
5905 						}
5906 						break;
5907 					}
5908 					} 
5909 				}
5910 				setState(1353);
5911 				_errHandler.sync(this);
5912 				_alt = getInterpreter().adaptivePredict(_input,43,_ctx);
5913 			}
5914 			}
5915 		}
5916 		catch (RecognitionException re) {
5917 			_localctx.exception = re;
5918 			_errHandler.reportError(this, re);
5919 			_errHandler.recover(this, re);
5920 		}
5921 		finally {
5922 			unrollRecursionContexts(_parentctx);
5923 		}
5924 		return _localctx;
5925 	}
5926 
5927 	public static class AndOperatorContext extends ParserRuleContext {
5928 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
5929 		public TerminalNode AND_() { return getToken(SQLServerStatementParser.AND_, 0); }
5930 		public AndOperatorContext(ParserRuleContext parent, int invokingState) {
5931 			super(parent, invokingState);
5932 		}
5933 		@Override public int getRuleIndex() { return RULE_andOperator; }
5934 		@Override
5935 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5936 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAndOperator(this);
5937 			else return visitor.visitChildren(this);
5938 		}
5939 	}
5940 
5941 	public final AndOperatorContext andOperator() throws RecognitionException {
5942 		AndOperatorContext _localctx = new AndOperatorContext(_ctx, getState());
5943 		enterRule(_localctx, 100, RULE_andOperator);
5944 		int _la;
5945 		try {
5946 			enterOuterAlt(_localctx, 1);
5947 			{
5948 			setState(1354);
5949 			_la = _input.LA(1);
5950 			if ( !(_la==AND_ || _la==AND) ) {
5951 			_errHandler.recoverInline(this);
5952 			}
5953 			else {
5954 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5955 				_errHandler.reportMatch(this);
5956 				consume();
5957 			}
5958 			}
5959 		}
5960 		catch (RecognitionException re) {
5961 			_localctx.exception = re;
5962 			_errHandler.reportError(this, re);
5963 			_errHandler.recover(this, re);
5964 		}
5965 		finally {
5966 			exitRule();
5967 		}
5968 		return _localctx;
5969 	}
5970 
5971 	public static class OrOperatorContext extends ParserRuleContext {
5972 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
5973 		public TerminalNode OR_() { return getToken(SQLServerStatementParser.OR_, 0); }
5974 		public OrOperatorContext(ParserRuleContext parent, int invokingState) {
5975 			super(parent, invokingState);
5976 		}
5977 		@Override public int getRuleIndex() { return RULE_orOperator; }
5978 		@Override
5979 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5980 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrOperator(this);
5981 			else return visitor.visitChildren(this);
5982 		}
5983 	}
5984 
5985 	public final OrOperatorContext orOperator() throws RecognitionException {
5986 		OrOperatorContext _localctx = new OrOperatorContext(_ctx, getState());
5987 		enterRule(_localctx, 102, RULE_orOperator);
5988 		int _la;
5989 		try {
5990 			enterOuterAlt(_localctx, 1);
5991 			{
5992 			setState(1356);
5993 			_la = _input.LA(1);
5994 			if ( !(_la==OR_ || _la==OR) ) {
5995 			_errHandler.recoverInline(this);
5996 			}
5997 			else {
5998 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5999 				_errHandler.reportMatch(this);
6000 				consume();
6001 			}
6002 			}
6003 		}
6004 		catch (RecognitionException re) {
6005 			_localctx.exception = re;
6006 			_errHandler.reportError(this, re);
6007 			_errHandler.recover(this, re);
6008 		}
6009 		finally {
6010 			exitRule();
6011 		}
6012 		return _localctx;
6013 	}
6014 
6015 	public static class DistinctFromContext extends ParserRuleContext {
6016 		public TerminalNode IS() { return getToken(SQLServerStatementParser.IS, 0); }
6017 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
6018 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
6019 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6020 		public DistinctFromContext(ParserRuleContext parent, int invokingState) {
6021 			super(parent, invokingState);
6022 		}
6023 		@Override public int getRuleIndex() { return RULE_distinctFrom; }
6024 		@Override
6025 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6026 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistinctFrom(this);
6027 			else return visitor.visitChildren(this);
6028 		}
6029 	}
6030 
6031 	public final DistinctFromContext distinctFrom() throws RecognitionException {
6032 		DistinctFromContext _localctx = new DistinctFromContext(_ctx, getState());
6033 		enterRule(_localctx, 104, RULE_distinctFrom);
6034 		int _la;
6035 		try {
6036 			enterOuterAlt(_localctx, 1);
6037 			{
6038 			setState(1358);
6039 			match(IS);
6040 			setState(1360);
6041 			_errHandler.sync(this);
6042 			_la = _input.LA(1);
6043 			if (_la==NOT) {
6044 				{
6045 				setState(1359);
6046 				match(NOT);
6047 				}
6048 			}
6049 
6050 			setState(1362);
6051 			match(DISTINCT);
6052 			setState(1363);
6053 			match(FROM);
6054 			}
6055 		}
6056 		catch (RecognitionException re) {
6057 			_localctx.exception = re;
6058 			_errHandler.reportError(this, re);
6059 			_errHandler.recover(this, re);
6060 		}
6061 		finally {
6062 			exitRule();
6063 		}
6064 		return _localctx;
6065 	}
6066 
6067 	public static class NotOperatorContext extends ParserRuleContext {
6068 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6069 		public TerminalNode NOT_() { return getToken(SQLServerStatementParser.NOT_, 0); }
6070 		public NotOperatorContext(ParserRuleContext parent, int invokingState) {
6071 			super(parent, invokingState);
6072 		}
6073 		@Override public int getRuleIndex() { return RULE_notOperator; }
6074 		@Override
6075 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6076 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNotOperator(this);
6077 			else return visitor.visitChildren(this);
6078 		}
6079 	}
6080 
6081 	public final NotOperatorContext notOperator() throws RecognitionException {
6082 		NotOperatorContext _localctx = new NotOperatorContext(_ctx, getState());
6083 		enterRule(_localctx, 106, RULE_notOperator);
6084 		int _la;
6085 		try {
6086 			enterOuterAlt(_localctx, 1);
6087 			{
6088 			setState(1365);
6089 			_la = _input.LA(1);
6090 			if ( !(_la==NOT_ || _la==NOT) ) {
6091 			_errHandler.recoverInline(this);
6092 			}
6093 			else {
6094 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6095 				_errHandler.reportMatch(this);
6096 				consume();
6097 			}
6098 			}
6099 		}
6100 		catch (RecognitionException re) {
6101 			_localctx.exception = re;
6102 			_errHandler.reportError(this, re);
6103 			_errHandler.recover(this, re);
6104 		}
6105 		finally {
6106 			exitRule();
6107 		}
6108 		return _localctx;
6109 	}
6110 
6111 	public static class BooleanPrimaryContext extends ParserRuleContext {
6112 		public PredicateContext predicate() {
6113 			return getRuleContext(PredicateContext.class,0);
6114 		}
6115 		public BooleanPrimaryContext booleanPrimary() {
6116 			return getRuleContext(BooleanPrimaryContext.class,0);
6117 		}
6118 		public TerminalNode IS() { return getToken(SQLServerStatementParser.IS, 0); }
6119 		public TerminalNode TRUE() { return getToken(SQLServerStatementParser.TRUE, 0); }
6120 		public TerminalNode FALSE() { return getToken(SQLServerStatementParser.FALSE, 0); }
6121 		public TerminalNode UNKNOWN() { return getToken(SQLServerStatementParser.UNKNOWN, 0); }
6122 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
6123 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6124 		public TerminalNode SAFE_EQ_() { return getToken(SQLServerStatementParser.SAFE_EQ_, 0); }
6125 		public ComparisonOperatorContext comparisonOperator() {
6126 			return getRuleContext(ComparisonOperatorContext.class,0);
6127 		}
6128 		public SubqueryContext subquery() {
6129 			return getRuleContext(SubqueryContext.class,0);
6130 		}
6131 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
6132 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
6133 		public BooleanPrimaryContext(ParserRuleContext parent, int invokingState) {
6134 			super(parent, invokingState);
6135 		}
6136 		@Override public int getRuleIndex() { return RULE_booleanPrimary; }
6137 		@Override
6138 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6139 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBooleanPrimary(this);
6140 			else return visitor.visitChildren(this);
6141 		}
6142 	}
6143 
6144 	public final BooleanPrimaryContext booleanPrimary() throws RecognitionException {
6145 		return booleanPrimary(0);
6146 	}
6147 
6148 	private BooleanPrimaryContext booleanPrimary(int _p) throws RecognitionException {
6149 		ParserRuleContext _parentctx = _ctx;
6150 		int _parentState = getState();
6151 		BooleanPrimaryContext _localctx = new BooleanPrimaryContext(_ctx, _parentState);
6152 		BooleanPrimaryContext _prevctx = _localctx;
6153 		int _startState = 108;
6154 		enterRecursionRule(_localctx, 108, RULE_booleanPrimary, _p);
6155 		int _la;
6156 		try {
6157 			int _alt;
6158 			enterOuterAlt(_localctx, 1);
6159 			{
6160 			{
6161 			setState(1368);
6162 			predicate();
6163 			}
6164 			_ctx.stop = _input.LT(-1);
6165 			setState(1390);
6166 			_errHandler.sync(this);
6167 			_alt = getInterpreter().adaptivePredict(_input,47,_ctx);
6168 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6169 				if ( _alt==1 ) {
6170 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6171 					_prevctx = _localctx;
6172 					{
6173 					setState(1388);
6174 					_errHandler.sync(this);
6175 					switch ( getInterpreter().adaptivePredict(_input,46,_ctx) ) {
6176 					case 1:
6177 						{
6178 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6179 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6180 						setState(1370);
6181 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
6182 						setState(1371);
6183 						match(IS);
6184 						setState(1373);
6185 						_errHandler.sync(this);
6186 						_la = _input.LA(1);
6187 						if (_la==NOT) {
6188 							{
6189 							setState(1372);
6190 							match(NOT);
6191 							}
6192 						}
6193 
6194 						setState(1375);
6195 						_la = _input.LA(1);
6196 						if ( !(((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (NULL - 108)) | (1L << (TRUE - 108)) | (1L << (FALSE - 108)))) != 0) || _la==UNKNOWN) ) {
6197 						_errHandler.recoverInline(this);
6198 						}
6199 						else {
6200 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6201 							_errHandler.reportMatch(this);
6202 							consume();
6203 						}
6204 						}
6205 						break;
6206 					case 2:
6207 						{
6208 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6209 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6210 						setState(1376);
6211 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
6212 						setState(1377);
6213 						match(SAFE_EQ_);
6214 						setState(1378);
6215 						predicate();
6216 						}
6217 						break;
6218 					case 3:
6219 						{
6220 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6221 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6222 						setState(1379);
6223 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
6224 						setState(1380);
6225 						comparisonOperator();
6226 						setState(1381);
6227 						predicate();
6228 						}
6229 						break;
6230 					case 4:
6231 						{
6232 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6233 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6234 						setState(1383);
6235 						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
6236 						setState(1384);
6237 						comparisonOperator();
6238 						setState(1385);
6239 						_la = _input.LA(1);
6240 						if ( !(_la==ALL || _la==ANY) ) {
6241 						_errHandler.recoverInline(this);
6242 						}
6243 						else {
6244 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6245 							_errHandler.reportMatch(this);
6246 							consume();
6247 						}
6248 						setState(1386);
6249 						subquery();
6250 						}
6251 						break;
6252 					}
6253 					} 
6254 				}
6255 				setState(1392);
6256 				_errHandler.sync(this);
6257 				_alt = getInterpreter().adaptivePredict(_input,47,_ctx);
6258 			}
6259 			}
6260 		}
6261 		catch (RecognitionException re) {
6262 			_localctx.exception = re;
6263 			_errHandler.reportError(this, re);
6264 			_errHandler.recover(this, re);
6265 		}
6266 		finally {
6267 			unrollRecursionContexts(_parentctx);
6268 		}
6269 		return _localctx;
6270 	}
6271 
6272 	public static class ComparisonOperatorContext extends ParserRuleContext {
6273 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
6274 		public TerminalNode GTE_() { return getToken(SQLServerStatementParser.GTE_, 0); }
6275 		public TerminalNode GT_() { return getToken(SQLServerStatementParser.GT_, 0); }
6276 		public TerminalNode LTE_() { return getToken(SQLServerStatementParser.LTE_, 0); }
6277 		public TerminalNode LT_() { return getToken(SQLServerStatementParser.LT_, 0); }
6278 		public TerminalNode NEQ_() { return getToken(SQLServerStatementParser.NEQ_, 0); }
6279 		public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
6280 			super(parent, invokingState);
6281 		}
6282 		@Override public int getRuleIndex() { return RULE_comparisonOperator; }
6283 		@Override
6284 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6285 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComparisonOperator(this);
6286 			else return visitor.visitChildren(this);
6287 		}
6288 	}
6289 
6290 	public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
6291 		ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
6292 		enterRule(_localctx, 110, RULE_comparisonOperator);
6293 		int _la;
6294 		try {
6295 			enterOuterAlt(_localctx, 1);
6296 			{
6297 			setState(1393);
6298 			_la = _input.LA(1);
6299 			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ_) | (1L << NEQ_) | (1L << GT_) | (1L << GTE_) | (1L << LT_) | (1L << LTE_))) != 0)) ) {
6300 			_errHandler.recoverInline(this);
6301 			}
6302 			else {
6303 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6304 				_errHandler.reportMatch(this);
6305 				consume();
6306 			}
6307 			}
6308 		}
6309 		catch (RecognitionException re) {
6310 			_localctx.exception = re;
6311 			_errHandler.reportError(this, re);
6312 			_errHandler.recover(this, re);
6313 		}
6314 		finally {
6315 			exitRule();
6316 		}
6317 		return _localctx;
6318 	}
6319 
6320 	public static class PredicateContext extends ParserRuleContext {
6321 		public List<BitExprContext> bitExpr() {
6322 			return getRuleContexts(BitExprContext.class);
6323 		}
6324 		public BitExprContext bitExpr(int i) {
6325 			return getRuleContext(BitExprContext.class,i);
6326 		}
6327 		public TerminalNode IN() { return getToken(SQLServerStatementParser.IN, 0); }
6328 		public SubqueryContext subquery() {
6329 			return getRuleContext(SubqueryContext.class,0);
6330 		}
6331 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6332 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6333 		public List<ExprContext> expr() {
6334 			return getRuleContexts(ExprContext.class);
6335 		}
6336 		public ExprContext expr(int i) {
6337 			return getRuleContext(ExprContext.class,i);
6338 		}
6339 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6340 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6341 		public TerminalNode COMMA_(int i) {
6342 			return getToken(SQLServerStatementParser.COMMA_, i);
6343 		}
6344 		public TerminalNode BETWEEN() { return getToken(SQLServerStatementParser.BETWEEN, 0); }
6345 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
6346 		public PredicateContext predicate() {
6347 			return getRuleContext(PredicateContext.class,0);
6348 		}
6349 		public TerminalNode LIKE() { return getToken(SQLServerStatementParser.LIKE, 0); }
6350 		public List<SimpleExprContext> simpleExpr() {
6351 			return getRuleContexts(SimpleExprContext.class);
6352 		}
6353 		public SimpleExprContext simpleExpr(int i) {
6354 			return getRuleContext(SimpleExprContext.class,i);
6355 		}
6356 		public TerminalNode ESCAPE() { return getToken(SQLServerStatementParser.ESCAPE, 0); }
6357 		public PredicateContext(ParserRuleContext parent, int invokingState) {
6358 			super(parent, invokingState);
6359 		}
6360 		@Override public int getRuleIndex() { return RULE_predicate; }
6361 		@Override
6362 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6363 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPredicate(this);
6364 			else return visitor.visitChildren(this);
6365 		}
6366 	}
6367 
6368 	public final PredicateContext predicate() throws RecognitionException {
6369 		PredicateContext _localctx = new PredicateContext(_ctx, getState());
6370 		enterRule(_localctx, 112, RULE_predicate);
6371 		int _la;
6372 		try {
6373 			setState(1438);
6374 			_errHandler.sync(this);
6375 			switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
6376 			case 1:
6377 				enterOuterAlt(_localctx, 1);
6378 				{
6379 				setState(1395);
6380 				bitExpr(0);
6381 				setState(1397);
6382 				_errHandler.sync(this);
6383 				_la = _input.LA(1);
6384 				if (_la==NOT) {
6385 					{
6386 					setState(1396);
6387 					match(NOT);
6388 					}
6389 				}
6390 
6391 				setState(1399);
6392 				match(IN);
6393 				setState(1400);
6394 				subquery();
6395 				}
6396 				break;
6397 			case 2:
6398 				enterOuterAlt(_localctx, 2);
6399 				{
6400 				setState(1402);
6401 				bitExpr(0);
6402 				setState(1404);
6403 				_errHandler.sync(this);
6404 				_la = _input.LA(1);
6405 				if (_la==NOT) {
6406 					{
6407 					setState(1403);
6408 					match(NOT);
6409 					}
6410 				}
6411 
6412 				setState(1406);
6413 				match(IN);
6414 				setState(1407);
6415 				match(LP_);
6416 				setState(1408);
6417 				expr(0);
6418 				setState(1413);
6419 				_errHandler.sync(this);
6420 				_la = _input.LA(1);
6421 				while (_la==COMMA_) {
6422 					{
6423 					{
6424 					setState(1409);
6425 					match(COMMA_);
6426 					setState(1410);
6427 					expr(0);
6428 					}
6429 					}
6430 					setState(1415);
6431 					_errHandler.sync(this);
6432 					_la = _input.LA(1);
6433 				}
6434 				setState(1416);
6435 				match(RP_);
6436 				}
6437 				break;
6438 			case 3:
6439 				enterOuterAlt(_localctx, 3);
6440 				{
6441 				setState(1418);
6442 				bitExpr(0);
6443 				setState(1420);
6444 				_errHandler.sync(this);
6445 				_la = _input.LA(1);
6446 				if (_la==NOT) {
6447 					{
6448 					setState(1419);
6449 					match(NOT);
6450 					}
6451 				}
6452 
6453 				setState(1422);
6454 				match(BETWEEN);
6455 				setState(1423);
6456 				bitExpr(0);
6457 				setState(1424);
6458 				match(AND);
6459 				setState(1425);
6460 				predicate();
6461 				}
6462 				break;
6463 			case 4:
6464 				enterOuterAlt(_localctx, 4);
6465 				{
6466 				setState(1427);
6467 				bitExpr(0);
6468 				setState(1429);
6469 				_errHandler.sync(this);
6470 				_la = _input.LA(1);
6471 				if (_la==NOT) {
6472 					{
6473 					setState(1428);
6474 					match(NOT);
6475 					}
6476 				}
6477 
6478 				setState(1431);
6479 				match(LIKE);
6480 				setState(1432);
6481 				simpleExpr(0);
6482 				setState(1435);
6483 				_errHandler.sync(this);
6484 				switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
6485 				case 1:
6486 					{
6487 					setState(1433);
6488 					match(ESCAPE);
6489 					setState(1434);
6490 					simpleExpr(0);
6491 					}
6492 					break;
6493 				}
6494 				}
6495 				break;
6496 			case 5:
6497 				enterOuterAlt(_localctx, 5);
6498 				{
6499 				setState(1437);
6500 				bitExpr(0);
6501 				}
6502 				break;
6503 			}
6504 		}
6505 		catch (RecognitionException re) {
6506 			_localctx.exception = re;
6507 			_errHandler.reportError(this, re);
6508 			_errHandler.recover(this, re);
6509 		}
6510 		finally {
6511 			exitRule();
6512 		}
6513 		return _localctx;
6514 	}
6515 
6516 	public static class BitExprContext extends ParserRuleContext {
6517 		public SimpleExprContext simpleExpr() {
6518 			return getRuleContext(SimpleExprContext.class,0);
6519 		}
6520 		public List<BitExprContext> bitExpr() {
6521 			return getRuleContexts(BitExprContext.class);
6522 		}
6523 		public BitExprContext bitExpr(int i) {
6524 			return getRuleContext(BitExprContext.class,i);
6525 		}
6526 		public TerminalNode VERTICAL_BAR_() { return getToken(SQLServerStatementParser.VERTICAL_BAR_, 0); }
6527 		public TerminalNode AMPERSAND_() { return getToken(SQLServerStatementParser.AMPERSAND_, 0); }
6528 		public TerminalNode SIGNED_LEFT_SHIFT_() { return getToken(SQLServerStatementParser.SIGNED_LEFT_SHIFT_, 0); }
6529 		public TerminalNode SIGNED_RIGHT_SHIFT_() { return getToken(SQLServerStatementParser.SIGNED_RIGHT_SHIFT_, 0); }
6530 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
6531 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
6532 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
6533 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
6534 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
6535 		public TerminalNode CARET_() { return getToken(SQLServerStatementParser.CARET_, 0); }
6536 		public BitExprContext(ParserRuleContext parent, int invokingState) {
6537 			super(parent, invokingState);
6538 		}
6539 		@Override public int getRuleIndex() { return RULE_bitExpr; }
6540 		@Override
6541 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6542 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBitExpr(this);
6543 			else return visitor.visitChildren(this);
6544 		}
6545 	}
6546 
6547 	public final BitExprContext bitExpr() throws RecognitionException {
6548 		return bitExpr(0);
6549 	}
6550 
6551 	private BitExprContext bitExpr(int _p) throws RecognitionException {
6552 		ParserRuleContext _parentctx = _ctx;
6553 		int _parentState = getState();
6554 		BitExprContext _localctx = new BitExprContext(_ctx, _parentState);
6555 		BitExprContext _prevctx = _localctx;
6556 		int _startState = 114;
6557 		enterRecursionRule(_localctx, 114, RULE_bitExpr, _p);
6558 		try {
6559 			int _alt;
6560 			enterOuterAlt(_localctx, 1);
6561 			{
6562 			{
6563 			setState(1441);
6564 			simpleExpr(0);
6565 			}
6566 			_ctx.stop = _input.LT(-1);
6567 			setState(1475);
6568 			_errHandler.sync(this);
6569 			_alt = getInterpreter().adaptivePredict(_input,56,_ctx);
6570 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6571 				if ( _alt==1 ) {
6572 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6573 					_prevctx = _localctx;
6574 					{
6575 					setState(1473);
6576 					_errHandler.sync(this);
6577 					switch ( getInterpreter().adaptivePredict(_input,55,_ctx) ) {
6578 					case 1:
6579 						{
6580 						_localctx = new BitExprContext(_parentctx, _parentState);
6581 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6582 						setState(1443);
6583 						if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
6584 						setState(1444);
6585 						match(VERTICAL_BAR_);
6586 						setState(1445);
6587 						bitExpr(12);
6588 						}
6589 						break;
6590 					case 2:
6591 						{
6592 						_localctx = new BitExprContext(_parentctx, _parentState);
6593 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6594 						setState(1446);
6595 						if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
6596 						setState(1447);
6597 						match(AMPERSAND_);
6598 						setState(1448);
6599 						bitExpr(11);
6600 						}
6601 						break;
6602 					case 3:
6603 						{
6604 						_localctx = new BitExprContext(_parentctx, _parentState);
6605 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6606 						setState(1449);
6607 						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
6608 						setState(1450);
6609 						match(SIGNED_LEFT_SHIFT_);
6610 						setState(1451);
6611 						bitExpr(10);
6612 						}
6613 						break;
6614 					case 4:
6615 						{
6616 						_localctx = new BitExprContext(_parentctx, _parentState);
6617 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6618 						setState(1452);
6619 						if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
6620 						setState(1453);
6621 						match(SIGNED_RIGHT_SHIFT_);
6622 						setState(1454);
6623 						bitExpr(9);
6624 						}
6625 						break;
6626 					case 5:
6627 						{
6628 						_localctx = new BitExprContext(_parentctx, _parentState);
6629 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6630 						setState(1455);
6631 						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
6632 						setState(1456);
6633 						match(PLUS_);
6634 						setState(1457);
6635 						bitExpr(8);
6636 						}
6637 						break;
6638 					case 6:
6639 						{
6640 						_localctx = new BitExprContext(_parentctx, _parentState);
6641 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6642 						setState(1458);
6643 						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
6644 						setState(1459);
6645 						match(MINUS_);
6646 						setState(1460);
6647 						bitExpr(7);
6648 						}
6649 						break;
6650 					case 7:
6651 						{
6652 						_localctx = new BitExprContext(_parentctx, _parentState);
6653 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6654 						setState(1461);
6655 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
6656 						setState(1462);
6657 						match(ASTERISK_);
6658 						setState(1463);
6659 						bitExpr(6);
6660 						}
6661 						break;
6662 					case 8:
6663 						{
6664 						_localctx = new BitExprContext(_parentctx, _parentState);
6665 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6666 						setState(1464);
6667 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
6668 						setState(1465);
6669 						match(SLASH_);
6670 						setState(1466);
6671 						bitExpr(5);
6672 						}
6673 						break;
6674 					case 9:
6675 						{
6676 						_localctx = new BitExprContext(_parentctx, _parentState);
6677 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6678 						setState(1467);
6679 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
6680 						setState(1468);
6681 						match(MOD_);
6682 						setState(1469);
6683 						bitExpr(4);
6684 						}
6685 						break;
6686 					case 10:
6687 						{
6688 						_localctx = new BitExprContext(_parentctx, _parentState);
6689 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6690 						setState(1470);
6691 						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
6692 						setState(1471);
6693 						match(CARET_);
6694 						setState(1472);
6695 						bitExpr(3);
6696 						}
6697 						break;
6698 					}
6699 					} 
6700 				}
6701 				setState(1477);
6702 				_errHandler.sync(this);
6703 				_alt = getInterpreter().adaptivePredict(_input,56,_ctx);
6704 			}
6705 			}
6706 		}
6707 		catch (RecognitionException re) {
6708 			_localctx.exception = re;
6709 			_errHandler.reportError(this, re);
6710 			_errHandler.recover(this, re);
6711 		}
6712 		finally {
6713 			unrollRecursionContexts(_parentctx);
6714 		}
6715 		return _localctx;
6716 	}
6717 
6718 	public static class SimpleExprContext extends ParserRuleContext {
6719 		public FunctionCallContext functionCall() {
6720 			return getRuleContext(FunctionCallContext.class,0);
6721 		}
6722 		public ParameterMarkerContext parameterMarker() {
6723 			return getRuleContext(ParameterMarkerContext.class,0);
6724 		}
6725 		public LiteralsContext literals() {
6726 			return getRuleContext(LiteralsContext.class,0);
6727 		}
6728 		public ColumnNameContext columnName() {
6729 			return getRuleContext(ColumnNameContext.class,0);
6730 		}
6731 		public VariableNameContext variableName() {
6732 			return getRuleContext(VariableNameContext.class,0);
6733 		}
6734 		public List<SimpleExprContext> simpleExpr() {
6735 			return getRuleContexts(SimpleExprContext.class);
6736 		}
6737 		public SimpleExprContext simpleExpr(int i) {
6738 			return getRuleContext(SimpleExprContext.class,i);
6739 		}
6740 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
6741 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
6742 		public TerminalNode TILDE_() { return getToken(SQLServerStatementParser.TILDE_, 0); }
6743 		public TerminalNode NOT_() { return getToken(SQLServerStatementParser.NOT_, 0); }
6744 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
6745 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6746 		public List<ExprContext> expr() {
6747 			return getRuleContexts(ExprContext.class);
6748 		}
6749 		public ExprContext expr(int i) {
6750 			return getRuleContext(ExprContext.class,i);
6751 		}
6752 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6753 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
6754 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6755 		public TerminalNode COMMA_(int i) {
6756 			return getToken(SQLServerStatementParser.COMMA_, i);
6757 		}
6758 		public SubqueryContext subquery() {
6759 			return getRuleContext(SubqueryContext.class,0);
6760 		}
6761 		public TerminalNode EXISTS() { return getToken(SQLServerStatementParser.EXISTS, 0); }
6762 		public TerminalNode LBE_() { return getToken(SQLServerStatementParser.LBE_, 0); }
6763 		public IdentifierContext identifier() {
6764 			return getRuleContext(IdentifierContext.class,0);
6765 		}
6766 		public TerminalNode RBE_() { return getToken(SQLServerStatementParser.RBE_, 0); }
6767 		public CaseExpressionContext caseExpression() {
6768 			return getRuleContext(CaseExpressionContext.class,0);
6769 		}
6770 		public PrivateExprOfDbContext privateExprOfDb() {
6771 			return getRuleContext(PrivateExprOfDbContext.class,0);
6772 		}
6773 		public TerminalNode OR_() { return getToken(SQLServerStatementParser.OR_, 0); }
6774 		public SimpleExprContext(ParserRuleContext parent, int invokingState) {
6775 			super(parent, invokingState);
6776 		}
6777 		@Override public int getRuleIndex() { return RULE_simpleExpr; }
6778 		@Override
6779 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6780 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSimpleExpr(this);
6781 			else return visitor.visitChildren(this);
6782 		}
6783 	}
6784 
6785 	public final SimpleExprContext simpleExpr() throws RecognitionException {
6786 		return simpleExpr(0);
6787 	}
6788 
6789 	private SimpleExprContext simpleExpr(int _p) throws RecognitionException {
6790 		ParserRuleContext _parentctx = _ctx;
6791 		int _parentState = getState();
6792 		SimpleExprContext _localctx = new SimpleExprContext(_ctx, _parentState);
6793 		SimpleExprContext _prevctx = _localctx;
6794 		int _startState = 116;
6795 		enterRecursionRule(_localctx, 116, RULE_simpleExpr, _p);
6796 		int _la;
6797 		try {
6798 			int _alt;
6799 			enterOuterAlt(_localctx, 1);
6800 			{
6801 			setState(1511);
6802 			_errHandler.sync(this);
6803 			switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) {
6804 			case 1:
6805 				{
6806 				setState(1479);
6807 				functionCall();
6808 				}
6809 				break;
6810 			case 2:
6811 				{
6812 				setState(1480);
6813 				parameterMarker();
6814 				}
6815 				break;
6816 			case 3:
6817 				{
6818 				setState(1481);
6819 				literals();
6820 				}
6821 				break;
6822 			case 4:
6823 				{
6824 				setState(1482);
6825 				columnName();
6826 				}
6827 				break;
6828 			case 5:
6829 				{
6830 				setState(1483);
6831 				variableName();
6832 				}
6833 				break;
6834 			case 6:
6835 				{
6836 				setState(1484);
6837 				_la = _input.LA(1);
6838 				if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_))) != 0) || _la==BINARY) ) {
6839 				_errHandler.recoverInline(this);
6840 				}
6841 				else {
6842 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6843 					_errHandler.reportMatch(this);
6844 					consume();
6845 				}
6846 				setState(1485);
6847 				simpleExpr(6);
6848 				}
6849 				break;
6850 			case 7:
6851 				{
6852 				setState(1487);
6853 				_errHandler.sync(this);
6854 				_la = _input.LA(1);
6855 				if (_la==ROW) {
6856 					{
6857 					setState(1486);
6858 					match(ROW);
6859 					}
6860 				}
6861 
6862 				setState(1489);
6863 				match(LP_);
6864 				setState(1490);
6865 				expr(0);
6866 				setState(1495);
6867 				_errHandler.sync(this);
6868 				_la = _input.LA(1);
6869 				while (_la==COMMA_) {
6870 					{
6871 					{
6872 					setState(1491);
6873 					match(COMMA_);
6874 					setState(1492);
6875 					expr(0);
6876 					}
6877 					}
6878 					setState(1497);
6879 					_errHandler.sync(this);
6880 					_la = _input.LA(1);
6881 				}
6882 				setState(1498);
6883 				match(RP_);
6884 				}
6885 				break;
6886 			case 8:
6887 				{
6888 				setState(1501);
6889 				_errHandler.sync(this);
6890 				_la = _input.LA(1);
6891 				if (_la==EXISTS) {
6892 					{
6893 					setState(1500);
6894 					match(EXISTS);
6895 					}
6896 				}
6897 
6898 				setState(1503);
6899 				subquery();
6900 				}
6901 				break;
6902 			case 9:
6903 				{
6904 				setState(1504);
6905 				match(LBE_);
6906 				setState(1505);
6907 				identifier();
6908 				setState(1506);
6909 				expr(0);
6910 				setState(1507);
6911 				match(RBE_);
6912 				}
6913 				break;
6914 			case 10:
6915 				{
6916 				setState(1509);
6917 				caseExpression();
6918 				}
6919 				break;
6920 			case 11:
6921 				{
6922 				setState(1510);
6923 				privateExprOfDb();
6924 				}
6925 				break;
6926 			}
6927 			_ctx.stop = _input.LT(-1);
6928 			setState(1518);
6929 			_errHandler.sync(this);
6930 			_alt = getInterpreter().adaptivePredict(_input,61,_ctx);
6931 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6932 				if ( _alt==1 ) {
6933 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6934 					_prevctx = _localctx;
6935 					{
6936 					{
6937 					_localctx = new SimpleExprContext(_parentctx, _parentState);
6938 					pushNewRecursionContext(_localctx, _startState, RULE_simpleExpr);
6939 					setState(1513);
6940 					if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
6941 					setState(1514);
6942 					match(OR_);
6943 					setState(1515);
6944 					simpleExpr(8);
6945 					}
6946 					} 
6947 				}
6948 				setState(1520);
6949 				_errHandler.sync(this);
6950 				_alt = getInterpreter().adaptivePredict(_input,61,_ctx);
6951 			}
6952 			}
6953 		}
6954 		catch (RecognitionException re) {
6955 			_localctx.exception = re;
6956 			_errHandler.reportError(this, re);
6957 			_errHandler.recover(this, re);
6958 		}
6959 		finally {
6960 			unrollRecursionContexts(_parentctx);
6961 		}
6962 		return _localctx;
6963 	}
6964 
6965 	public static class FunctionCallContext extends ParserRuleContext {
6966 		public AggregationFunctionContext aggregationFunction() {
6967 			return getRuleContext(AggregationFunctionContext.class,0);
6968 		}
6969 		public SpecialFunctionContext specialFunction() {
6970 			return getRuleContext(SpecialFunctionContext.class,0);
6971 		}
6972 		public RegularFunctionContext regularFunction() {
6973 			return getRuleContext(RegularFunctionContext.class,0);
6974 		}
6975 		public FunctionCallContext(ParserRuleContext parent, int invokingState) {
6976 			super(parent, invokingState);
6977 		}
6978 		@Override public int getRuleIndex() { return RULE_functionCall; }
6979 		@Override
6980 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6981 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionCall(this);
6982 			else return visitor.visitChildren(this);
6983 		}
6984 	}
6985 
6986 	public final FunctionCallContext functionCall() throws RecognitionException {
6987 		FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState());
6988 		enterRule(_localctx, 118, RULE_functionCall);
6989 		try {
6990 			setState(1524);
6991 			_errHandler.sync(this);
6992 			switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) {
6993 			case 1:
6994 				enterOuterAlt(_localctx, 1);
6995 				{
6996 				setState(1521);
6997 				aggregationFunction();
6998 				}
6999 				break;
7000 			case 2:
7001 				enterOuterAlt(_localctx, 2);
7002 				{
7003 				setState(1522);
7004 				specialFunction();
7005 				}
7006 				break;
7007 			case 3:
7008 				enterOuterAlt(_localctx, 3);
7009 				{
7010 				setState(1523);
7011 				regularFunction();
7012 				}
7013 				break;
7014 			}
7015 		}
7016 		catch (RecognitionException re) {
7017 			_localctx.exception = re;
7018 			_errHandler.reportError(this, re);
7019 			_errHandler.recover(this, re);
7020 		}
7021 		finally {
7022 			exitRule();
7023 		}
7024 		return _localctx;
7025 	}
7026 
7027 	public static class AggregationFunctionContext extends ParserRuleContext {
7028 		public AggregationFunctionNameContext aggregationFunctionName() {
7029 			return getRuleContext(AggregationFunctionNameContext.class,0);
7030 		}
7031 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7032 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7033 		public DistinctContext distinct() {
7034 			return getRuleContext(DistinctContext.class,0);
7035 		}
7036 		public List<ExprContext> expr() {
7037 			return getRuleContexts(ExprContext.class);
7038 		}
7039 		public ExprContext expr(int i) {
7040 			return getRuleContext(ExprContext.class,i);
7041 		}
7042 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
7043 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7044 		public TerminalNode COMMA_(int i) {
7045 			return getToken(SQLServerStatementParser.COMMA_, i);
7046 		}
7047 		public AggregationFunctionContext(ParserRuleContext parent, int invokingState) {
7048 			super(parent, invokingState);
7049 		}
7050 		@Override public int getRuleIndex() { return RULE_aggregationFunction; }
7051 		@Override
7052 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7053 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationFunction(this);
7054 			else return visitor.visitChildren(this);
7055 		}
7056 	}
7057 
7058 	public final AggregationFunctionContext aggregationFunction() throws RecognitionException {
7059 		AggregationFunctionContext _localctx = new AggregationFunctionContext(_ctx, getState());
7060 		enterRule(_localctx, 120, RULE_aggregationFunction);
7061 		int _la;
7062 		try {
7063 			enterOuterAlt(_localctx, 1);
7064 			{
7065 			setState(1526);
7066 			aggregationFunctionName();
7067 			setState(1527);
7068 			match(LP_);
7069 			setState(1529);
7070 			_errHandler.sync(this);
7071 			_la = _input.LA(1);
7072 			if (_la==DISTINCT) {
7073 				{
7074 				setState(1528);
7075 				distinct();
7076 				}
7077 			}
7078 
7079 			setState(1540);
7080 			_errHandler.sync(this);
7081 			switch (_input.LA(1)) {
7082 			case NOT_:
7083 			case TILDE_:
7084 			case PLUS_:
7085 			case MINUS_:
7086 			case LP_:
7087 			case LBE_:
7088 			case QUESTION_:
7089 			case DOLLAR_:
7090 			case TRUNCATE:
7091 			case SCHEMA:
7092 			case COLUMNS:
7093 			case PRECISION:
7094 			case FUNCTION:
7095 			case TRIGGER:
7096 			case CASE:
7097 			case CAST:
7098 			case SUBSTRING:
7099 			case OFF:
7100 			case IF:
7101 			case NOT:
7102 			case NULL:
7103 			case TRUE:
7104 			case FALSE:
7105 			case EXISTS:
7106 			case GROUP:
7107 			case LIMIT:
7108 			case OFFSET:
7109 			case SAVEPOINT:
7110 			case BOOLEAN:
7111 			case CHAR:
7112 			case ARRAY:
7113 			case INTERVAL:
7114 			case DATE:
7115 			case TIME:
7116 			case TIMESTAMP:
7117 			case LOCALTIME:
7118 			case LOCALTIMESTAMP:
7119 			case QUARTER:
7120 			case MONTH:
7121 			case WEEK:
7122 			case DAY:
7123 			case SECOND:
7124 			case MICROSECOND:
7125 			case MAX:
7126 			case MIN:
7127 			case SUM:
7128 			case COUNT:
7129 			case AVG:
7130 			case ENABLE:
7131 			case DISABLE:
7132 			case INSTANCE:
7133 			case DO:
7134 			case DEFINER:
7135 			case SQL:
7136 			case CASCADED:
7137 			case LOCAL:
7138 			case NEXT:
7139 			case NAME:
7140 			case INTEGER:
7141 			case TYPE:
7142 			case TEXT:
7143 			case VIEWS:
7144 			case READ_ONLY:
7145 			case DATABASE:
7146 			case RETURNS:
7147 			case DATEPART:
7148 			case PASSWORD:
7149 			case BINARY:
7150 			case HIDDEN_:
7151 			case MOD:
7152 			case PARTITION:
7153 			case PARTITIONS:
7154 			case TOP:
7155 			case ROW:
7156 			case ROWS:
7157 			case XOR:
7158 			case ALWAYS:
7159 			case ROLE:
7160 			case START:
7161 			case ALGORITHM:
7162 			case AUTO:
7163 			case BLOCKERS:
7164 			case CLUSTERED:
7165 			case NONCLUSTERED:
7166 			case COLUMNSTORE:
7167 			case CONTENT:
7168 			case CONVERT:
7169 			case YEARS:
7170 			case MONTHS:
7171 			case WEEKS:
7172 			case DAYS:
7173 			case MINUTES:
7174 			case DENY:
7175 			case DETERMINISTIC:
7176 			case DISTRIBUTION:
7177 			case DOCUMENT:
7178 			case DURABILITY:
7179 			case ENCRYPTED:
7180 			case FILESTREAM:
7181 			case FILETABLE:
7182 			case FILLFACTOR:
7183 			case FOLLOWING:
7184 			case HASH:
7185 			case HEAP:
7186 			case INBOUND:
7187 			case OUTBOUND:
7188 			case UNBOUNDED:
7189 			case INFINITE:
7190 			case LOGIN:
7191 			case MASKED:
7192 			case MAXDOP:
7193 			case MOVE:
7194 			case NOCHECK:
7195 			case OBJECT:
7196 			case ONLINE:
7197 			case OVER:
7198 			case PAGE:
7199 			case PAUSED:
7200 			case PERIOD:
7201 			case PERSISTED:
7202 			case PRECEDING:
7203 			case RANDOMIZED:
7204 			case RANGE:
7205 			case REBUILD:
7206 			case REPLICATE:
7207 			case REPLICATION:
7208 			case RESUMABLE:
7209 			case ROWGUIDCOL:
7210 			case SAVE:
7211 			case SELF:
7212 			case SPARSE:
7213 			case SWITCH:
7214 			case TRAN:
7215 			case TRANCOUNT:
7216 			case CONTROL:
7217 			case CONCAT:
7218 			case TAKE:
7219 			case OWNERSHIP:
7220 			case DEFINITION:
7221 			case APPLICATION:
7222 			case ASSEMBLY:
7223 			case SYMMETRIC:
7224 			case ASYMMETRIC:
7225 			case SERVER:
7226 			case RECEIVE:
7227 			case CHANGE:
7228 			case TRACE:
7229 			case TRACKING:
7230 			case RESOURCES:
7231 			case SETTINGS:
7232 			case STATE:
7233 			case AVAILABILITY:
7234 			case CREDENTIAL:
7235 			case ENDPOINT:
7236 			case EVENT:
7237 			case NOTIFICATION:
7238 			case LINKED:
7239 			case AUDIT:
7240 			case DDL:
7241 			case XML:
7242 			case IMPERSONATE:
7243 			case SECURABLES:
7244 			case AUTHENTICATE:
7245 			case EXTERNAL:
7246 			case ACCESS:
7247 			case ADMINISTER:
7248 			case BULK:
7249 			case OPERATIONS:
7250 			case UNSAFE:
7251 			case SHUTDOWN:
7252 			case SCOPED:
7253 			case CONFIGURATION:
7254 			case DATASPACE:
7255 			case SERVICE:
7256 			case CERTIFICATE:
7257 			case CONTRACT:
7258 			case ENCRYPTION:
7259 			case MASTER:
7260 			case DATA:
7261 			case SOURCE:
7262 			case FILE:
7263 			case FORMAT:
7264 			case LIBRARY:
7265 			case FULLTEXT:
7266 			case MASK:
7267 			case UNMASK:
7268 			case MESSAGE:
7269 			case REMOTE:
7270 			case BINDING:
7271 			case ROUTE:
7272 			case SECURITY:
7273 			case POLICY:
7274 			case AGGREGATE:
7275 			case QUEUE:
7276 			case RULE:
7277 			case SYNONYM:
7278 			case COLLECTION:
7279 			case SCRIPT:
7280 			case KILL:
7281 			case BACKUP:
7282 			case LOG:
7283 			case SHOWPLAN:
7284 			case SUBSCRIBE:
7285 			case QUERY:
7286 			case NOTIFICATIONS:
7287 			case CHECKPOINT:
7288 			case SEQUENCE:
7289 			case ABORT_AFTER_WAIT:
7290 			case ALLOW_PAGE_LOCKS:
7291 			case ALLOW_ROW_LOCKS:
7292 			case ALL_SPARSE_COLUMNS:
7293 			case BUCKET_COUNT:
7294 			case COLUMNSTORE_ARCHIVE:
7295 			case COLUMN_ENCRYPTION_KEY:
7296 			case COLUMN_SET:
7297 			case COMPRESSION_DELAY:
7298 			case DATABASE_DEAULT:
7299 			case DATA_COMPRESSION:
7300 			case DATA_CONSISTENCY_CHECK:
7301 			case ENCRYPTION_TYPE:
7302 			case SYSTEM_TIME:
7303 			case SYSTEM_VERSIONING:
7304 			case TEXTIMAGE_ON:
7305 			case WAIT_AT_LOW_PRIORITY:
7306 			case STATISTICS_INCREMENTAL:
7307 			case STATISTICS_NORECOMPUTE:
7308 			case ROUND_ROBIN:
7309 			case SCHEMA_AND_DATA:
7310 			case SCHEMA_ONLY:
7311 			case SORT_IN_TEMPDB:
7312 			case IGNORE_DUP_KEY:
7313 			case IMPLICIT_TRANSACTIONS:
7314 			case MAX_DURATION:
7315 			case MEMORY_OPTIMIZED:
7316 			case MIGRATION_STATE:
7317 			case PAD_INDEX:
7318 			case REMOTE_DATA_ARCHIVE:
7319 			case FILESTREAM_ON:
7320 			case FILETABLE_COLLATE_FILENAME:
7321 			case FILETABLE_DIRECTORY:
7322 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
7323 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
7324 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
7325 			case FILTER_PREDICATE:
7326 			case HISTORY_RETENTION_PERIOD:
7327 			case HISTORY_TABLE:
7328 			case LOCK_ESCALATION:
7329 			case DROP_EXISTING:
7330 			case ROW_NUMBER:
7331 			case FIRST:
7332 			case DATETIME2:
7333 			case OUTPUT:
7334 			case INSERTED:
7335 			case DELETED:
7336 			case FILENAME:
7337 			case SIZE:
7338 			case MAXSIZE:
7339 			case FILEGROWTH:
7340 			case UNLIMITED:
7341 			case KB:
7342 			case MB:
7343 			case GB:
7344 			case TB:
7345 			case CONTAINS:
7346 			case MEMORY_OPTIMIZED_DATA:
7347 			case FILEGROUP:
7348 			case NON_TRANSACTED_ACCESS:
7349 			case DB_CHAINING:
7350 			case TRUSTWORTHY:
7351 			case FORWARD_ONLY:
7352 			case KEYSET:
7353 			case FAST_FORWARD:
7354 			case SCROLL_LOCKS:
7355 			case OPTIMISTIC:
7356 			case TYPE_WARNING:
7357 			case SCHEMABINDING:
7358 			case CALLER:
7359 			case OWNER:
7360 			case SNAPSHOT:
7361 			case REPEATABLE:
7362 			case SERIALIZABLE:
7363 			case NATIVE_COMPILATION:
7364 			case VIEW_METADATA:
7365 			case INSTEAD:
7366 			case APPEND:
7367 			case INCREMENT:
7368 			case CACHE:
7369 			case MINVALUE:
7370 			case MAXVALUE:
7371 			case RESTART:
7372 			case LOB_COMPACTION:
7373 			case COMPRESS_ALL_ROW_GROUPS:
7374 			case REORGANIZE:
7375 			case RESUME:
7376 			case PAUSE:
7377 			case ABORT:
7378 			case ACCELERATED_DATABASE_RECOVERY:
7379 			case PERSISTENT_VERSION_STORE_FILEGROUP:
7380 			case IMMEDIATE:
7381 			case NO_WAIT:
7382 			case TARGET_RECOVERY_TIME:
7383 			case SECONDS:
7384 			case HONOR_BROKER_PRIORITY:
7385 			case ERROR_BROKER_CONVERSATIONS:
7386 			case NEW_BROKER:
7387 			case DISABLE_BROKER:
7388 			case ENABLE_BROKER:
7389 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
7390 			case READ_COMMITTED_SNAPSHOT:
7391 			case ALLOW_SNAPSHOT_ISOLATION:
7392 			case RECURSIVE_TRIGGERS:
7393 			case QUOTED_IDENTIFIER:
7394 			case NUMERIC_ROUNDABORT:
7395 			case CONCAT_NULL_YIELDS_NULL:
7396 			case COMPATIBILITY_LEVEL:
7397 			case ARITHABORT:
7398 			case ANSI_WARNINGS:
7399 			case ANSI_PADDING:
7400 			case ANSI_NULLS:
7401 			case ANSI_NULL_DEFAULT:
7402 			case PAGE_VERIFY:
7403 			case CHECKSUM:
7404 			case TORN_PAGE_DETECTION:
7405 			case BULK_LOGGED:
7406 			case RECOVERY:
7407 			case TOTAL_EXECUTION_CPU_TIME_MS:
7408 			case TOTAL_COMPILE_CPU_TIME_MS:
7409 			case STALE_CAPTURE_POLICY_THRESHOLD:
7410 			case EXECUTION_COUNT:
7411 			case QUERY_CAPTURE_POLICY:
7412 			case WAIT_STATS_CAPTURE_MODE:
7413 			case MAX_PLANS_PER_QUERY:
7414 			case QUERY_CAPTURE_MODE:
7415 			case SIZE_BASED_CLEANUP_MODE:
7416 			case INTERVAL_LENGTH_MINUTES:
7417 			case MAX_STORAGE_SIZE_MB:
7418 			case DATA_FLUSH_INTERVAL_SECONDS:
7419 			case CLEANUP_POLICY:
7420 			case CUSTOM:
7421 			case STALE_QUERY_THRESHOLD_DAYS:
7422 			case OPERATION_MODE:
7423 			case QUERY_STORE:
7424 			case CURSOR_DEFAULT:
7425 			case GLOBAL:
7426 			case CURSOR_CLOSE_ON_COMMIT:
7427 			case HOURS:
7428 			case CHANGE_RETENTION:
7429 			case AUTO_CLEANUP:
7430 			case CHANGE_TRACKING:
7431 			case AUTOMATIC_TUNING:
7432 			case FORCE_LAST_GOOD_PLAN:
7433 			case AUTO_UPDATE_STATISTICS_ASYNC:
7434 			case AUTO_UPDATE_STATISTICS:
7435 			case AUTO_SHRINK:
7436 			case AUTO_CREATE_STATISTICS:
7437 			case INCREMENTAL:
7438 			case AUTO_CLOSE:
7439 			case DATA_RETENTION:
7440 			case TEMPORAL_HISTORY_RETENTION:
7441 			case EDITION:
7442 			case MIXED_PAGE_ALLOCATION:
7443 			case DISABLED:
7444 			case ALLOWED:
7445 			case HADR:
7446 			case MULTI_USER:
7447 			case RESTRICTED_USER:
7448 			case SINGLE_USER:
7449 			case OFFLINE:
7450 			case EMERGENCY:
7451 			case SUSPEND:
7452 			case DATE_CORRELATION_OPTIMIZATION:
7453 			case ELASTIC_POOL:
7454 			case SERVICE_OBJECTIVE:
7455 			case DATABASE_NAME:
7456 			case ALLOW_CONNECTIONS:
7457 			case GEO:
7458 			case NAMED:
7459 			case DATEFIRST:
7460 			case BACKUP_STORAGE_REDUNDANCY:
7461 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
7462 			case SECONDARY:
7463 			case FAILOVER:
7464 			case DEFAULT_FULLTEXT_LANGUAGE:
7465 			case DEFAULT_LANGUAGE:
7466 			case INLINE:
7467 			case NESTED_TRIGGERS:
7468 			case TRANSFORM_NOISE_WORDS:
7469 			case TWO_DIGIT_YEAR_CUTOFF:
7470 			case PERSISTENT_LOG_BUFFER:
7471 			case DIRECTORY_NAME:
7472 			case DATEFORMAT:
7473 			case DELAYED_DURABILITY:
7474 			case AUTHORIZATION:
7475 			case TRANSFER:
7476 			case PROVIDER:
7477 			case SEARCH:
7478 			case MEMBER:
7479 			case OPENJSON:
7480 			case OPENROWSET:
7481 			case IDENTIFIER_:
7482 			case DELIMITED_IDENTIFIER_:
7483 			case STRING_:
7484 			case NUMBER_:
7485 			case HEX_DIGIT_:
7486 			case BIT_NUM_:
7487 			case NCHAR_TEXT:
7488 				{
7489 				setState(1531);
7490 				expr(0);
7491 				setState(1536);
7492 				_errHandler.sync(this);
7493 				_la = _input.LA(1);
7494 				while (_la==COMMA_) {
7495 					{
7496 					{
7497 					setState(1532);
7498 					match(COMMA_);
7499 					setState(1533);
7500 					expr(0);
7501 					}
7502 					}
7503 					setState(1538);
7504 					_errHandler.sync(this);
7505 					_la = _input.LA(1);
7506 				}
7507 				}
7508 				break;
7509 			case ASTERISK_:
7510 				{
7511 				setState(1539);
7512 				match(ASTERISK_);
7513 				}
7514 				break;
7515 			case RP_:
7516 				break;
7517 			default:
7518 				break;
7519 			}
7520 			setState(1542);
7521 			match(RP_);
7522 			}
7523 		}
7524 		catch (RecognitionException re) {
7525 			_localctx.exception = re;
7526 			_errHandler.reportError(this, re);
7527 			_errHandler.recover(this, re);
7528 		}
7529 		finally {
7530 			exitRule();
7531 		}
7532 		return _localctx;
7533 	}
7534 
7535 	public static class AggregationFunctionNameContext extends ParserRuleContext {
7536 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
7537 		public TerminalNode MIN() { return getToken(SQLServerStatementParser.MIN, 0); }
7538 		public TerminalNode SUM() { return getToken(SQLServerStatementParser.SUM, 0); }
7539 		public TerminalNode COUNT() { return getToken(SQLServerStatementParser.COUNT, 0); }
7540 		public TerminalNode AVG() { return getToken(SQLServerStatementParser.AVG, 0); }
7541 		public AggregationFunctionNameContext(ParserRuleContext parent, int invokingState) {
7542 			super(parent, invokingState);
7543 		}
7544 		@Override public int getRuleIndex() { return RULE_aggregationFunctionName; }
7545 		@Override
7546 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7547 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationFunctionName(this);
7548 			else return visitor.visitChildren(this);
7549 		}
7550 	}
7551 
7552 	public final AggregationFunctionNameContext aggregationFunctionName() throws RecognitionException {
7553 		AggregationFunctionNameContext _localctx = new AggregationFunctionNameContext(_ctx, getState());
7554 		enterRule(_localctx, 122, RULE_aggregationFunctionName);
7555 		int _la;
7556 		try {
7557 			enterOuterAlt(_localctx, 1);
7558 			{
7559 			setState(1544);
7560 			_la = _input.LA(1);
7561 			if ( !(((((_la - 149)) & ~0x3f) == 0 && ((1L << (_la - 149)) & ((1L << (MAX - 149)) | (1L << (MIN - 149)) | (1L << (SUM - 149)) | (1L << (COUNT - 149)) | (1L << (AVG - 149)))) != 0)) ) {
7562 			_errHandler.recoverInline(this);
7563 			}
7564 			else {
7565 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
7566 				_errHandler.reportMatch(this);
7567 				consume();
7568 			}
7569 			}
7570 		}
7571 		catch (RecognitionException re) {
7572 			_localctx.exception = re;
7573 			_errHandler.reportError(this, re);
7574 			_errHandler.recover(this, re);
7575 		}
7576 		finally {
7577 			exitRule();
7578 		}
7579 		return _localctx;
7580 	}
7581 
7582 	public static class DistinctContext extends ParserRuleContext {
7583 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
7584 		public DistinctContext(ParserRuleContext parent, int invokingState) {
7585 			super(parent, invokingState);
7586 		}
7587 		@Override public int getRuleIndex() { return RULE_distinct; }
7588 		@Override
7589 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7590 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistinct(this);
7591 			else return visitor.visitChildren(this);
7592 		}
7593 	}
7594 
7595 	public final DistinctContext distinct() throws RecognitionException {
7596 		DistinctContext _localctx = new DistinctContext(_ctx, getState());
7597 		enterRule(_localctx, 124, RULE_distinct);
7598 		try {
7599 			enterOuterAlt(_localctx, 1);
7600 			{
7601 			setState(1546);
7602 			match(DISTINCT);
7603 			}
7604 		}
7605 		catch (RecognitionException re) {
7606 			_localctx.exception = re;
7607 			_errHandler.reportError(this, re);
7608 			_errHandler.recover(this, re);
7609 		}
7610 		finally {
7611 			exitRule();
7612 		}
7613 		return _localctx;
7614 	}
7615 
7616 	public static class SpecialFunctionContext extends ParserRuleContext {
7617 		public CastFunctionContext castFunction() {
7618 			return getRuleContext(CastFunctionContext.class,0);
7619 		}
7620 		public CharFunctionContext charFunction() {
7621 			return getRuleContext(CharFunctionContext.class,0);
7622 		}
7623 		public ConvertFunctionContext convertFunction() {
7624 			return getRuleContext(ConvertFunctionContext.class,0);
7625 		}
7626 		public OpenJsonFunctionContext openJsonFunction() {
7627 			return getRuleContext(OpenJsonFunctionContext.class,0);
7628 		}
7629 		public OpenRowSetFunctionContext openRowSetFunction() {
7630 			return getRuleContext(OpenRowSetFunctionContext.class,0);
7631 		}
7632 		public SpecialFunctionContext(ParserRuleContext parent, int invokingState) {
7633 			super(parent, invokingState);
7634 		}
7635 		@Override public int getRuleIndex() { return RULE_specialFunction; }
7636 		@Override
7637 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7638 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSpecialFunction(this);
7639 			else return visitor.visitChildren(this);
7640 		}
7641 	}
7642 
7643 	public final SpecialFunctionContext specialFunction() throws RecognitionException {
7644 		SpecialFunctionContext _localctx = new SpecialFunctionContext(_ctx, getState());
7645 		enterRule(_localctx, 126, RULE_specialFunction);
7646 		try {
7647 			setState(1553);
7648 			_errHandler.sync(this);
7649 			switch (_input.LA(1)) {
7650 			case CAST:
7651 				enterOuterAlt(_localctx, 1);
7652 				{
7653 				setState(1548);
7654 				castFunction();
7655 				}
7656 				break;
7657 			case CHAR:
7658 				enterOuterAlt(_localctx, 2);
7659 				{
7660 				setState(1549);
7661 				charFunction();
7662 				}
7663 				break;
7664 			case CONVERT:
7665 				enterOuterAlt(_localctx, 3);
7666 				{
7667 				setState(1550);
7668 				convertFunction();
7669 				}
7670 				break;
7671 			case OPENJSON:
7672 				enterOuterAlt(_localctx, 4);
7673 				{
7674 				setState(1551);
7675 				openJsonFunction();
7676 				}
7677 				break;
7678 			case OPENROWSET:
7679 				enterOuterAlt(_localctx, 5);
7680 				{
7681 				setState(1552);
7682 				openRowSetFunction();
7683 				}
7684 				break;
7685 			default:
7686 				throw new NoViableAltException(this);
7687 			}
7688 		}
7689 		catch (RecognitionException re) {
7690 			_localctx.exception = re;
7691 			_errHandler.reportError(this, re);
7692 			_errHandler.recover(this, re);
7693 		}
7694 		finally {
7695 			exitRule();
7696 		}
7697 		return _localctx;
7698 	}
7699 
7700 	public static class CastFunctionContext extends ParserRuleContext {
7701 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
7702 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7703 		public ExprContext expr() {
7704 			return getRuleContext(ExprContext.class,0);
7705 		}
7706 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
7707 		public DataTypeContext dataType() {
7708 			return getRuleContext(DataTypeContext.class,0);
7709 		}
7710 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7711 		public CastFunctionContext(ParserRuleContext parent, int invokingState) {
7712 			super(parent, invokingState);
7713 		}
7714 		@Override public int getRuleIndex() { return RULE_castFunction; }
7715 		@Override
7716 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7717 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCastFunction(this);
7718 			else return visitor.visitChildren(this);
7719 		}
7720 	}
7721 
7722 	public final CastFunctionContext castFunction() throws RecognitionException {
7723 		CastFunctionContext _localctx = new CastFunctionContext(_ctx, getState());
7724 		enterRule(_localctx, 128, RULE_castFunction);
7725 		try {
7726 			enterOuterAlt(_localctx, 1);
7727 			{
7728 			setState(1555);
7729 			match(CAST);
7730 			setState(1556);
7731 			match(LP_);
7732 			setState(1557);
7733 			expr(0);
7734 			setState(1558);
7735 			match(AS);
7736 			setState(1559);
7737 			dataType();
7738 			setState(1560);
7739 			match(RP_);
7740 			}
7741 		}
7742 		catch (RecognitionException re) {
7743 			_localctx.exception = re;
7744 			_errHandler.reportError(this, re);
7745 			_errHandler.recover(this, re);
7746 		}
7747 		finally {
7748 			exitRule();
7749 		}
7750 		return _localctx;
7751 	}
7752 
7753 	public static class ConvertFunctionContext extends ParserRuleContext {
7754 		public TerminalNode CONVERT() { return getToken(SQLServerStatementParser.CONVERT, 0); }
7755 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7756 		public DataTypeContext dataType() {
7757 			return getRuleContext(DataTypeContext.class,0);
7758 		}
7759 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7760 		public TerminalNode COMMA_(int i) {
7761 			return getToken(SQLServerStatementParser.COMMA_, i);
7762 		}
7763 		public ExprContext expr() {
7764 			return getRuleContext(ExprContext.class,0);
7765 		}
7766 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7767 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
7768 		public ConvertFunctionContext(ParserRuleContext parent, int invokingState) {
7769 			super(parent, invokingState);
7770 		}
7771 		@Override public int getRuleIndex() { return RULE_convertFunction; }
7772 		@Override
7773 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7774 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConvertFunction(this);
7775 			else return visitor.visitChildren(this);
7776 		}
7777 	}
7778 
7779 	public final ConvertFunctionContext convertFunction() throws RecognitionException {
7780 		ConvertFunctionContext _localctx = new ConvertFunctionContext(_ctx, getState());
7781 		enterRule(_localctx, 130, RULE_convertFunction);
7782 		int _la;
7783 		try {
7784 			enterOuterAlt(_localctx, 1);
7785 			{
7786 			setState(1562);
7787 			match(CONVERT);
7788 			setState(1563);
7789 			match(LP_);
7790 			setState(1564);
7791 			dataType();
7792 			setState(1565);
7793 			match(COMMA_);
7794 			setState(1566);
7795 			expr(0);
7796 			setState(1569);
7797 			_errHandler.sync(this);
7798 			_la = _input.LA(1);
7799 			if (_la==COMMA_) {
7800 				{
7801 				setState(1567);
7802 				match(COMMA_);
7803 				setState(1568);
7804 				match(NUMBER_);
7805 				}
7806 			}
7807 
7808 			setState(1571);
7809 			match(RP_);
7810 			}
7811 		}
7812 		catch (RecognitionException re) {
7813 			_localctx.exception = re;
7814 			_errHandler.reportError(this, re);
7815 			_errHandler.recover(this, re);
7816 		}
7817 		finally {
7818 			exitRule();
7819 		}
7820 		return _localctx;
7821 	}
7822 
7823 	public static class CharFunctionContext extends ParserRuleContext {
7824 		public TerminalNode CHAR() { return getToken(SQLServerStatementParser.CHAR, 0); }
7825 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7826 		public List<ExprContext> expr() {
7827 			return getRuleContexts(ExprContext.class);
7828 		}
7829 		public ExprContext expr(int i) {
7830 			return getRuleContext(ExprContext.class,i);
7831 		}
7832 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7833 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7834 		public TerminalNode COMMA_(int i) {
7835 			return getToken(SQLServerStatementParser.COMMA_, i);
7836 		}
7837 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
7838 		public IgnoredIdentifierContext ignoredIdentifier() {
7839 			return getRuleContext(IgnoredIdentifierContext.class,0);
7840 		}
7841 		public CharFunctionContext(ParserRuleContext parent, int invokingState) {
7842 			super(parent, invokingState);
7843 		}
7844 		@Override public int getRuleIndex() { return RULE_charFunction; }
7845 		@Override
7846 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7847 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCharFunction(this);
7848 			else return visitor.visitChildren(this);
7849 		}
7850 	}
7851 
7852 	public final CharFunctionContext charFunction() throws RecognitionException {
7853 		CharFunctionContext _localctx = new CharFunctionContext(_ctx, getState());
7854 		enterRule(_localctx, 132, RULE_charFunction);
7855 		int _la;
7856 		try {
7857 			enterOuterAlt(_localctx, 1);
7858 			{
7859 			setState(1573);
7860 			match(CHAR);
7861 			setState(1574);
7862 			match(LP_);
7863 			setState(1575);
7864 			expr(0);
7865 			setState(1580);
7866 			_errHandler.sync(this);
7867 			_la = _input.LA(1);
7868 			while (_la==COMMA_) {
7869 				{
7870 				{
7871 				setState(1576);
7872 				match(COMMA_);
7873 				setState(1577);
7874 				expr(0);
7875 				}
7876 				}
7877 				setState(1582);
7878 				_errHandler.sync(this);
7879 				_la = _input.LA(1);
7880 			}
7881 			setState(1585);
7882 			_errHandler.sync(this);
7883 			_la = _input.LA(1);
7884 			if (_la==USING) {
7885 				{
7886 				setState(1583);
7887 				match(USING);
7888 				setState(1584);
7889 				ignoredIdentifier();
7890 				}
7891 			}
7892 
7893 			setState(1587);
7894 			match(RP_);
7895 			}
7896 		}
7897 		catch (RecognitionException re) {
7898 			_localctx.exception = re;
7899 			_errHandler.reportError(this, re);
7900 			_errHandler.recover(this, re);
7901 		}
7902 		finally {
7903 			exitRule();
7904 		}
7905 		return _localctx;
7906 	}
7907 
7908 	public static class OpenJsonFunctionContext extends ParserRuleContext {
7909 		public TerminalNode OPENJSON() { return getToken(SQLServerStatementParser.OPENJSON, 0); }
7910 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7911 		public List<ExprContext> expr() {
7912 			return getRuleContexts(ExprContext.class);
7913 		}
7914 		public ExprContext expr(int i) {
7915 			return getRuleContext(ExprContext.class,i);
7916 		}
7917 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7918 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
7919 		public OpenJsonWithclauseContext openJsonWithclause() {
7920 			return getRuleContext(OpenJsonWithclauseContext.class,0);
7921 		}
7922 		public OpenJsonFunctionContext(ParserRuleContext parent, int invokingState) {
7923 			super(parent, invokingState);
7924 		}
7925 		@Override public int getRuleIndex() { return RULE_openJsonFunction; }
7926 		@Override
7927 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7928 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOpenJsonFunction(this);
7929 			else return visitor.visitChildren(this);
7930 		}
7931 	}
7932 
7933 	public final OpenJsonFunctionContext openJsonFunction() throws RecognitionException {
7934 		OpenJsonFunctionContext _localctx = new OpenJsonFunctionContext(_ctx, getState());
7935 		enterRule(_localctx, 134, RULE_openJsonFunction);
7936 		int _la;
7937 		try {
7938 			enterOuterAlt(_localctx, 1);
7939 			{
7940 			setState(1589);
7941 			match(OPENJSON);
7942 			setState(1590);
7943 			match(LP_);
7944 			setState(1591);
7945 			expr(0);
7946 			setState(1594);
7947 			_errHandler.sync(this);
7948 			_la = _input.LA(1);
7949 			if (_la==COMMA_) {
7950 				{
7951 				setState(1592);
7952 				match(COMMA_);
7953 				setState(1593);
7954 				expr(0);
7955 				}
7956 			}
7957 
7958 			setState(1596);
7959 			match(RP_);
7960 			setState(1598);
7961 			_errHandler.sync(this);
7962 			switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) {
7963 			case 1:
7964 				{
7965 				setState(1597);
7966 				openJsonWithclause();
7967 				}
7968 				break;
7969 			}
7970 			}
7971 		}
7972 		catch (RecognitionException re) {
7973 			_localctx.exception = re;
7974 			_errHandler.reportError(this, re);
7975 			_errHandler.recover(this, re);
7976 		}
7977 		finally {
7978 			exitRule();
7979 		}
7980 		return _localctx;
7981 	}
7982 
7983 	public static class OpenJsonWithclauseContext extends ParserRuleContext {
7984 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
7985 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7986 		public List<JsonColumnDefinitionContext> jsonColumnDefinition() {
7987 			return getRuleContexts(JsonColumnDefinitionContext.class);
7988 		}
7989 		public JsonColumnDefinitionContext jsonColumnDefinition(int i) {
7990 			return getRuleContext(JsonColumnDefinitionContext.class,i);
7991 		}
7992 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7993 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7994 		public TerminalNode COMMA_(int i) {
7995 			return getToken(SQLServerStatementParser.COMMA_, i);
7996 		}
7997 		public OpenJsonWithclauseContext(ParserRuleContext parent, int invokingState) {
7998 			super(parent, invokingState);
7999 		}
8000 		@Override public int getRuleIndex() { return RULE_openJsonWithclause; }
8001 		@Override
8002 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8003 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOpenJsonWithclause(this);
8004 			else return visitor.visitChildren(this);
8005 		}
8006 	}
8007 
8008 	public final OpenJsonWithclauseContext openJsonWithclause() throws RecognitionException {
8009 		OpenJsonWithclauseContext _localctx = new OpenJsonWithclauseContext(_ctx, getState());
8010 		enterRule(_localctx, 136, RULE_openJsonWithclause);
8011 		int _la;
8012 		try {
8013 			enterOuterAlt(_localctx, 1);
8014 			{
8015 			setState(1600);
8016 			match(WITH);
8017 			setState(1601);
8018 			match(LP_);
8019 			setState(1602);
8020 			jsonColumnDefinition();
8021 			setState(1607);
8022 			_errHandler.sync(this);
8023 			_la = _input.LA(1);
8024 			while (_la==COMMA_) {
8025 				{
8026 				{
8027 				setState(1603);
8028 				match(COMMA_);
8029 				setState(1604);
8030 				jsonColumnDefinition();
8031 				}
8032 				}
8033 				setState(1609);
8034 				_errHandler.sync(this);
8035 				_la = _input.LA(1);
8036 			}
8037 			setState(1610);
8038 			match(RP_);
8039 			}
8040 		}
8041 		catch (RecognitionException re) {
8042 			_localctx.exception = re;
8043 			_errHandler.reportError(this, re);
8044 			_errHandler.recover(this, re);
8045 		}
8046 		finally {
8047 			exitRule();
8048 		}
8049 		return _localctx;
8050 	}
8051 
8052 	public static class JsonColumnDefinitionContext extends ParserRuleContext {
8053 		public ColumnNameContext columnName() {
8054 			return getRuleContext(ColumnNameContext.class,0);
8055 		}
8056 		public DataTypeContext dataType() {
8057 			return getRuleContext(DataTypeContext.class,0);
8058 		}
8059 		public ExprContext expr() {
8060 			return getRuleContext(ExprContext.class,0);
8061 		}
8062 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
8063 		public TerminalNode JSON() { return getToken(SQLServerStatementParser.JSON, 0); }
8064 		public JsonColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
8065 			super(parent, invokingState);
8066 		}
8067 		@Override public int getRuleIndex() { return RULE_jsonColumnDefinition; }
8068 		@Override
8069 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8070 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonColumnDefinition(this);
8071 			else return visitor.visitChildren(this);
8072 		}
8073 	}
8074 
8075 	public final JsonColumnDefinitionContext jsonColumnDefinition() throws RecognitionException {
8076 		JsonColumnDefinitionContext _localctx = new JsonColumnDefinitionContext(_ctx, getState());
8077 		enterRule(_localctx, 138, RULE_jsonColumnDefinition);
8078 		int _la;
8079 		try {
8080 			enterOuterAlt(_localctx, 1);
8081 			{
8082 			setState(1612);
8083 			columnName();
8084 			setState(1613);
8085 			dataType();
8086 			setState(1615);
8087 			_errHandler.sync(this);
8088 			_la = _input.LA(1);
8089 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CASE - 69)) | (1L << (CAST - 69)) | (1L << (SUBSTRING - 69)) | (1L << (OFF - 69)) | (1L << (IF - 69)) | (1L << (NOT - 69)) | (1L << (NULL - 69)) | (1L << (TRUE - 69)) | (1L << (FALSE - 69)) | (1L << (EXISTS - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)) | (1L << (CHAR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (INTERVAL - 133)) | (1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (QUARTER - 133)) | (1L << (MONTH - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)) | (1L << (AUTO - 203)) | (1L << (BLOCKERS - 203)) | (1L << (CLUSTERED - 203)) | (1L << (NONCLUSTERED - 203)) | (1L << (COLUMNSTORE - 203)) | (1L << (CONTENT - 203)) | (1L << (CONVERT - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)) | (1L << (MINUTES - 267)) | (1L << (DENY - 267)) | (1L << (DETERMINISTIC - 267)) | (1L << (DISTRIBUTION - 267)) | (1L << (DOCUMENT - 267)) | (1L << (DURABILITY - 267)) | (1L << (ENCRYPTED - 267)) | (1L << (FILESTREAM - 267)) | (1L << (FILETABLE - 267)) | (1L << (FILLFACTOR - 267)) | (1L << (FOLLOWING - 267)) | (1L << (HASH - 267)) | (1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)) | (1L << (CONTROL - 267)) | (1L << (CONCAT - 267)) | (1L << (TAKE - 267)) | (1L << (OWNERSHIP - 267)) | (1L << (DEFINITION - 267)) | (1L << (APPLICATION - 267)) | (1L << (ASSEMBLY - 267)))) != 0) || ((((_la - 331)) & ~0x3f) == 0 && ((1L << (_la - 331)) & ((1L << (SYMMETRIC - 331)) | (1L << (ASYMMETRIC - 331)) | (1L << (SERVER - 331)) | (1L << (RECEIVE - 331)) | (1L << (CHANGE - 331)) | (1L << (TRACE - 331)) | (1L << (TRACKING - 331)) | (1L << (RESOURCES - 331)) | (1L << (SETTINGS - 331)) | (1L << (STATE - 331)) | (1L << (AVAILABILITY - 331)) | (1L << (CREDENTIAL - 331)) | (1L << (ENDPOINT - 331)) | (1L << (EVENT - 331)) | (1L << (NOTIFICATION - 331)) | (1L << (LINKED - 331)) | (1L << (AUDIT - 331)) | (1L << (DDL - 331)) | (1L << (XML - 331)) | (1L << (IMPERSONATE - 331)) | (1L << (SECURABLES - 331)) | (1L << (AUTHENTICATE - 331)) | (1L << (EXTERNAL - 331)) | (1L << (ACCESS - 331)) | (1L << (ADMINISTER - 331)) | (1L << (BULK - 331)) | (1L << (OPERATIONS - 331)) | (1L << (UNSAFE - 331)) | (1L << (SHUTDOWN - 331)) | (1L << (SCOPED - 331)) | (1L << (CONFIGURATION - 331)) | (1L << (DATASPACE - 331)) | (1L << (SERVICE - 331)) | (1L << (CERTIFICATE - 331)) | (1L << (CONTRACT - 331)) | (1L << (ENCRYPTION - 331)) | (1L << (MASTER - 331)) | (1L << (DATA - 331)) | (1L << (SOURCE - 331)) | (1L << (FILE - 331)) | (1L << (FORMAT - 331)) | (1L << (LIBRARY - 331)) | (1L << (FULLTEXT - 331)) | (1L << (MASK - 331)) | (1L << (UNMASK - 331)) | (1L << (MESSAGE - 331)) | (1L << (REMOTE - 331)) | (1L << (BINDING - 331)) | (1L << (ROUTE - 331)) | (1L << (SECURITY - 331)) | (1L << (POLICY - 331)) | (1L << (AGGREGATE - 331)) | (1L << (QUEUE - 331)) | (1L << (RULE - 331)) | (1L << (SYNONYM - 331)) | (1L << (COLLECTION - 331)) | (1L << (SCRIPT - 331)) | (1L << (KILL - 331)) | (1L << (BACKUP - 331)) | (1L << (LOG - 331)) | (1L << (SHOWPLAN - 331)) | (1L << (SUBSCRIBE - 331)) | (1L << (QUERY - 331)) | (1L << (NOTIFICATIONS - 331)))) != 0) || ((((_la - 395)) & ~0x3f) == 0 && ((1L << (_la - 395)) & ((1L << (CHECKPOINT - 395)) | (1L << (SEQUENCE - 395)) | (1L << (ABORT_AFTER_WAIT - 395)) | (1L << (ALLOW_PAGE_LOCKS - 395)) | (1L << (ALLOW_ROW_LOCKS - 395)) | (1L << (ALL_SPARSE_COLUMNS - 395)) | (1L << (BUCKET_COUNT - 395)) | (1L << (COLUMNSTORE_ARCHIVE - 395)) | (1L << (COLUMN_ENCRYPTION_KEY - 395)) | (1L << (COLUMN_SET - 395)) | (1L << (COMPRESSION_DELAY - 395)) | (1L << (DATABASE_DEAULT - 395)) | (1L << (DATA_COMPRESSION - 395)) | (1L << (DATA_CONSISTENCY_CHECK - 395)) | (1L << (ENCRYPTION_TYPE - 395)) | (1L << (SYSTEM_TIME - 395)) | (1L << (SYSTEM_VERSIONING - 395)) | (1L << (TEXTIMAGE_ON - 395)) | (1L << (WAIT_AT_LOW_PRIORITY - 395)) | (1L << (STATISTICS_INCREMENTAL - 395)) | (1L << (STATISTICS_NORECOMPUTE - 395)) | (1L << (ROUND_ROBIN - 395)) | (1L << (SCHEMA_AND_DATA - 395)) | (1L << (SCHEMA_ONLY - 395)) | (1L << (SORT_IN_TEMPDB - 395)) | (1L << (IGNORE_DUP_KEY - 395)) | (1L << (IMPLICIT_TRANSACTIONS - 395)) | (1L << (MAX_DURATION - 395)) | (1L << (MEMORY_OPTIMIZED - 395)) | (1L << (MIGRATION_STATE - 395)) | (1L << (PAD_INDEX - 395)) | (1L << (REMOTE_DATA_ARCHIVE - 395)) | (1L << (FILESTREAM_ON - 395)) | (1L << (FILETABLE_COLLATE_FILENAME - 395)) | (1L << (FILETABLE_DIRECTORY - 395)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILTER_PREDICATE - 395)) | (1L << (HISTORY_RETENTION_PERIOD - 395)) | (1L << (HISTORY_TABLE - 395)) | (1L << (LOCK_ESCALATION - 395)) | (1L << (DROP_EXISTING - 395)) | (1L << (ROW_NUMBER - 395)) | (1L << (FIRST - 395)) | (1L << (DATETIME2 - 395)) | (1L << (OUTPUT - 395)))) != 0) || ((((_la - 459)) & ~0x3f) == 0 && ((1L << (_la - 459)) & ((1L << (INSERTED - 459)) | (1L << (DELETED - 459)) | (1L << (FILENAME - 459)) | (1L << (SIZE - 459)) | (1L << (MAXSIZE - 459)) | (1L << (FILEGROWTH - 459)) | (1L << (UNLIMITED - 459)) | (1L << (KB - 459)) | (1L << (MB - 459)) | (1L << (GB - 459)) | (1L << (TB - 459)) | (1L << (CONTAINS - 459)) | (1L << (MEMORY_OPTIMIZED_DATA - 459)) | (1L << (FILEGROUP - 459)) | (1L << (NON_TRANSACTED_ACCESS - 459)) | (1L << (DB_CHAINING - 459)) | (1L << (TRUSTWORTHY - 459)) | (1L << (FORWARD_ONLY - 459)) | (1L << (KEYSET - 459)) | (1L << (FAST_FORWARD - 459)) | (1L << (SCROLL_LOCKS - 459)) | (1L << (OPTIMISTIC - 459)) | (1L << (TYPE_WARNING - 459)) | (1L << (SCHEMABINDING - 459)) | (1L << (CALLER - 459)))) != 0) || ((((_la - 527)) & ~0x3f) == 0 && ((1L << (_la - 527)) & ((1L << (OWNER - 527)) | (1L << (SNAPSHOT - 527)) | (1L << (REPEATABLE - 527)) | (1L << (SERIALIZABLE - 527)) | (1L << (NATIVE_COMPILATION - 527)) | (1L << (VIEW_METADATA - 527)) | (1L << (INSTEAD - 527)) | (1L << (APPEND - 527)) | (1L << (INCREMENT - 527)) | (1L << (CACHE - 527)) | (1L << (MINVALUE - 527)) | (1L << (MAXVALUE - 527)) | (1L << (RESTART - 527)) | (1L << (LOB_COMPACTION - 527)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 527)) | (1L << (REORGANIZE - 527)) | (1L << (RESUME - 527)) | (1L << (PAUSE - 527)) | (1L << (ABORT - 527)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 527)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 527)) | (1L << (IMMEDIATE - 527)) | (1L << (NO_WAIT - 527)) | (1L << (TARGET_RECOVERY_TIME - 527)) | (1L << (SECONDS - 527)) | (1L << (HONOR_BROKER_PRIORITY - 527)) | (1L << (ERROR_BROKER_CONVERSATIONS - 527)) | (1L << (NEW_BROKER - 527)) | (1L << (DISABLE_BROKER - 527)) | (1L << (ENABLE_BROKER - 527)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 527)) | (1L << (READ_COMMITTED_SNAPSHOT - 527)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 527)) | (1L << (RECURSIVE_TRIGGERS - 527)) | (1L << (QUOTED_IDENTIFIER - 527)) | (1L << (NUMERIC_ROUNDABORT - 527)) | (1L << (CONCAT_NULL_YIELDS_NULL - 527)) | (1L << (COMPATIBILITY_LEVEL - 527)) | (1L << (ARITHABORT - 527)) | (1L << (ANSI_WARNINGS - 527)) | (1L << (ANSI_PADDING - 527)) | (1L << (ANSI_NULLS - 527)) | (1L << (ANSI_NULL_DEFAULT - 527)) | (1L << (PAGE_VERIFY - 527)) | (1L << (CHECKSUM - 527)) | (1L << (TORN_PAGE_DETECTION - 527)) | (1L << (BULK_LOGGED - 527)))) != 0) || ((((_la - 591)) & ~0x3f) == 0 && ((1L << (_la - 591)) & ((1L << (RECOVERY - 591)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 591)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 591)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 591)) | (1L << (EXECUTION_COUNT - 591)) | (1L << (QUERY_CAPTURE_POLICY - 591)) | (1L << (WAIT_STATS_CAPTURE_MODE - 591)) | (1L << (MAX_PLANS_PER_QUERY - 591)) | (1L << (QUERY_CAPTURE_MODE - 591)) | (1L << (SIZE_BASED_CLEANUP_MODE - 591)) | (1L << (INTERVAL_LENGTH_MINUTES - 591)) | (1L << (MAX_STORAGE_SIZE_MB - 591)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 591)) | (1L << (CLEANUP_POLICY - 591)) | (1L << (CUSTOM - 591)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 591)) | (1L << (OPERATION_MODE - 591)) | (1L << (QUERY_STORE - 591)) | (1L << (CURSOR_DEFAULT - 591)) | (1L << (GLOBAL - 591)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 591)) | (1L << (HOURS - 591)) | (1L << (CHANGE_RETENTION - 591)) | (1L << (AUTO_CLEANUP - 591)) | (1L << (CHANGE_TRACKING - 591)) | (1L << (AUTOMATIC_TUNING - 591)) | (1L << (FORCE_LAST_GOOD_PLAN - 591)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 591)) | (1L << (AUTO_UPDATE_STATISTICS - 591)) | (1L << (AUTO_SHRINK - 591)) | (1L << (AUTO_CREATE_STATISTICS - 591)) | (1L << (INCREMENTAL - 591)) | (1L << (AUTO_CLOSE - 591)) | (1L << (DATA_RETENTION - 591)) | (1L << (TEMPORAL_HISTORY_RETENTION - 591)) | (1L << (EDITION - 591)) | (1L << (MIXED_PAGE_ALLOCATION - 591)) | (1L << (DISABLED - 591)) | (1L << (ALLOWED - 591)) | (1L << (HADR - 591)) | (1L << (MULTI_USER - 591)) | (1L << (RESTRICTED_USER - 591)) | (1L << (SINGLE_USER - 591)) | (1L << (OFFLINE - 591)) | (1L << (EMERGENCY - 591)) | (1L << (SUSPEND - 591)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 591)) | (1L << (ELASTIC_POOL - 591)) | (1L << (SERVICE_OBJECTIVE - 591)) | (1L << (DATABASE_NAME - 591)) | (1L << (ALLOW_CONNECTIONS - 591)) | (1L << (GEO - 591)) | (1L << (NAMED - 591)) | (1L << (DATEFIRST - 591)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 591)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 591)) | (1L << (SECONDARY - 591)) | (1L << (FAILOVER - 591)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 591)) | (1L << (DEFAULT_LANGUAGE - 591)) | (1L << (INLINE - 591)) | (1L << (NESTED_TRIGGERS - 591)) | (1L << (TRANSFORM_NOISE_WORDS - 591)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 591)))) != 0) || ((((_la - 655)) & ~0x3f) == 0 && ((1L << (_la - 655)) & ((1L << (PERSISTENT_LOG_BUFFER - 655)) | (1L << (DIRECTORY_NAME - 655)) | (1L << (DATEFORMAT - 655)) | (1L << (DELAYED_DURABILITY - 655)) | (1L << (AUTHORIZATION - 655)) | (1L << (TRANSFER - 655)) | (1L << (PROVIDER - 655)) | (1L << (SEARCH - 655)) | (1L << (MEMBER - 655)) | (1L << (OPENJSON - 655)) | (1L << (OPENROWSET - 655)) | (1L << (IDENTIFIER_ - 655)) | (1L << (DELIMITED_IDENTIFIER_ - 655)) | (1L << (STRING_ - 655)) | (1L << (NUMBER_ - 655)))) != 0) || ((((_la - 719)) & ~0x3f) == 0 && ((1L << (_la - 719)) & ((1L << (HEX_DIGIT_ - 719)) | (1L << (BIT_NUM_ - 719)) | (1L << (NCHAR_TEXT - 719)))) != 0)) {
8090 				{
8091 				setState(1614);
8092 				expr(0);
8093 				}
8094 			}
8095 
8096 			setState(1619);
8097 			_errHandler.sync(this);
8098 			_la = _input.LA(1);
8099 			if (_la==AS) {
8100 				{
8101 				setState(1617);
8102 				match(AS);
8103 				setState(1618);
8104 				match(JSON);
8105 				}
8106 			}
8107 
8108 			}
8109 		}
8110 		catch (RecognitionException re) {
8111 			_localctx.exception = re;
8112 			_errHandler.reportError(this, re);
8113 			_errHandler.recover(this, re);
8114 		}
8115 		finally {
8116 			exitRule();
8117 		}
8118 		return _localctx;
8119 	}
8120 
8121 	public static class OpenRowSetFunctionContext extends ParserRuleContext {
8122 		public TerminalNode OPENROWSET() { return getToken(SQLServerStatementParser.OPENROWSET, 0); }
8123 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8124 		public List<ExprContext> expr() {
8125 			return getRuleContexts(ExprContext.class);
8126 		}
8127 		public ExprContext expr(int i) {
8128 			return getRuleContext(ExprContext.class,i);
8129 		}
8130 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8131 		public TerminalNode COMMA_(int i) {
8132 			return getToken(SQLServerStatementParser.COMMA_, i);
8133 		}
8134 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8135 		public TableNameContext tableName() {
8136 			return getRuleContext(TableNameContext.class,0);
8137 		}
8138 		public List<TerminalNode> SEMI_() { return getTokens(SQLServerStatementParser.SEMI_); }
8139 		public TerminalNode SEMI_(int i) {
8140 			return getToken(SQLServerStatementParser.SEMI_, i);
8141 		}
8142 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
8143 		public OpenRowSetFunctionContext(ParserRuleContext parent, int invokingState) {
8144 			super(parent, invokingState);
8145 		}
8146 		@Override public int getRuleIndex() { return RULE_openRowSetFunction; }
8147 		@Override
8148 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8149 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOpenRowSetFunction(this);
8150 			else return visitor.visitChildren(this);
8151 		}
8152 	}
8153 
8154 	public final OpenRowSetFunctionContext openRowSetFunction() throws RecognitionException {
8155 		OpenRowSetFunctionContext _localctx = new OpenRowSetFunctionContext(_ctx, getState());
8156 		enterRule(_localctx, 140, RULE_openRowSetFunction);
8157 		int _la;
8158 		try {
8159 			setState(1654);
8160 			_errHandler.sync(this);
8161 			switch ( getInterpreter().adaptivePredict(_input,78,_ctx) ) {
8162 			case 1:
8163 				enterOuterAlt(_localctx, 1);
8164 				{
8165 				setState(1621);
8166 				match(OPENROWSET);
8167 				setState(1622);
8168 				match(LP_);
8169 				setState(1623);
8170 				expr(0);
8171 				setState(1624);
8172 				match(COMMA_);
8173 				setState(1632);
8174 				_errHandler.sync(this);
8175 				switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) {
8176 				case 1:
8177 					{
8178 					{
8179 					setState(1625);
8180 					expr(0);
8181 					setState(1626);
8182 					match(SEMI_);
8183 					setState(1627);
8184 					expr(0);
8185 					setState(1628);
8186 					match(SEMI_);
8187 					setState(1629);
8188 					expr(0);
8189 					}
8190 					}
8191 					break;
8192 				case 2:
8193 					{
8194 					setState(1631);
8195 					expr(0);
8196 					}
8197 					break;
8198 				}
8199 				setState(1634);
8200 				match(COMMA_);
8201 				setState(1637);
8202 				_errHandler.sync(this);
8203 				switch ( getInterpreter().adaptivePredict(_input,76,_ctx) ) {
8204 				case 1:
8205 					{
8206 					setState(1635);
8207 					tableName();
8208 					}
8209 					break;
8210 				case 2:
8211 					{
8212 					setState(1636);
8213 					expr(0);
8214 					}
8215 					break;
8216 				}
8217 				setState(1639);
8218 				match(RP_);
8219 				}
8220 				break;
8221 			case 2:
8222 				enterOuterAlt(_localctx, 2);
8223 				{
8224 				setState(1641);
8225 				match(OPENROWSET);
8226 				setState(1642);
8227 				match(LP_);
8228 				setState(1643);
8229 				match(BULK);
8230 				setState(1644);
8231 				expr(0);
8232 				setState(1649);
8233 				_errHandler.sync(this);
8234 				_la = _input.LA(1);
8235 				while (_la==COMMA_) {
8236 					{
8237 					{
8238 					setState(1645);
8239 					match(COMMA_);
8240 					setState(1646);
8241 					expr(0);
8242 					}
8243 					}
8244 					setState(1651);
8245 					_errHandler.sync(this);
8246 					_la = _input.LA(1);
8247 				}
8248 				setState(1652);
8249 				match(RP_);
8250 				}
8251 				break;
8252 			}
8253 		}
8254 		catch (RecognitionException re) {
8255 			_localctx.exception = re;
8256 			_errHandler.reportError(this, re);
8257 			_errHandler.recover(this, re);
8258 		}
8259 		finally {
8260 			exitRule();
8261 		}
8262 		return _localctx;
8263 	}
8264 
8265 	public static class RegularFunctionContext extends ParserRuleContext {
8266 		public RegularFunctionNameContext regularFunctionName() {
8267 			return getRuleContext(RegularFunctionNameContext.class,0);
8268 		}
8269 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8270 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8271 		public List<ExprContext> expr() {
8272 			return getRuleContexts(ExprContext.class);
8273 		}
8274 		public ExprContext expr(int i) {
8275 			return getRuleContext(ExprContext.class,i);
8276 		}
8277 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
8278 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8279 		public TerminalNode COMMA_(int i) {
8280 			return getToken(SQLServerStatementParser.COMMA_, i);
8281 		}
8282 		public RegularFunctionContext(ParserRuleContext parent, int invokingState) {
8283 			super(parent, invokingState);
8284 		}
8285 		@Override public int getRuleIndex() { return RULE_regularFunction; }
8286 		@Override
8287 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8288 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularFunction(this);
8289 			else return visitor.visitChildren(this);
8290 		}
8291 	}
8292 
8293 	public final RegularFunctionContext regularFunction() throws RecognitionException {
8294 		RegularFunctionContext _localctx = new RegularFunctionContext(_ctx, getState());
8295 		enterRule(_localctx, 142, RULE_regularFunction);
8296 		int _la;
8297 		try {
8298 			enterOuterAlt(_localctx, 1);
8299 			{
8300 			setState(1656);
8301 			regularFunctionName();
8302 			setState(1657);
8303 			match(LP_);
8304 			setState(1667);
8305 			_errHandler.sync(this);
8306 			switch (_input.LA(1)) {
8307 			case NOT_:
8308 			case TILDE_:
8309 			case PLUS_:
8310 			case MINUS_:
8311 			case LP_:
8312 			case LBE_:
8313 			case QUESTION_:
8314 			case DOLLAR_:
8315 			case TRUNCATE:
8316 			case SCHEMA:
8317 			case COLUMNS:
8318 			case PRECISION:
8319 			case FUNCTION:
8320 			case TRIGGER:
8321 			case CASE:
8322 			case CAST:
8323 			case SUBSTRING:
8324 			case OFF:
8325 			case IF:
8326 			case NOT:
8327 			case NULL:
8328 			case TRUE:
8329 			case FALSE:
8330 			case EXISTS:
8331 			case GROUP:
8332 			case LIMIT:
8333 			case OFFSET:
8334 			case SAVEPOINT:
8335 			case BOOLEAN:
8336 			case CHAR:
8337 			case ARRAY:
8338 			case INTERVAL:
8339 			case DATE:
8340 			case TIME:
8341 			case TIMESTAMP:
8342 			case LOCALTIME:
8343 			case LOCALTIMESTAMP:
8344 			case QUARTER:
8345 			case MONTH:
8346 			case WEEK:
8347 			case DAY:
8348 			case SECOND:
8349 			case MICROSECOND:
8350 			case MAX:
8351 			case MIN:
8352 			case SUM:
8353 			case COUNT:
8354 			case AVG:
8355 			case ENABLE:
8356 			case DISABLE:
8357 			case INSTANCE:
8358 			case DO:
8359 			case DEFINER:
8360 			case SQL:
8361 			case CASCADED:
8362 			case LOCAL:
8363 			case NEXT:
8364 			case NAME:
8365 			case INTEGER:
8366 			case TYPE:
8367 			case TEXT:
8368 			case VIEWS:
8369 			case READ_ONLY:
8370 			case DATABASE:
8371 			case RETURNS:
8372 			case DATEPART:
8373 			case PASSWORD:
8374 			case BINARY:
8375 			case HIDDEN_:
8376 			case MOD:
8377 			case PARTITION:
8378 			case PARTITIONS:
8379 			case TOP:
8380 			case ROW:
8381 			case ROWS:
8382 			case XOR:
8383 			case ALWAYS:
8384 			case ROLE:
8385 			case START:
8386 			case ALGORITHM:
8387 			case AUTO:
8388 			case BLOCKERS:
8389 			case CLUSTERED:
8390 			case NONCLUSTERED:
8391 			case COLUMNSTORE:
8392 			case CONTENT:
8393 			case CONVERT:
8394 			case YEARS:
8395 			case MONTHS:
8396 			case WEEKS:
8397 			case DAYS:
8398 			case MINUTES:
8399 			case DENY:
8400 			case DETERMINISTIC:
8401 			case DISTRIBUTION:
8402 			case DOCUMENT:
8403 			case DURABILITY:
8404 			case ENCRYPTED:
8405 			case FILESTREAM:
8406 			case FILETABLE:
8407 			case FILLFACTOR:
8408 			case FOLLOWING:
8409 			case HASH:
8410 			case HEAP:
8411 			case INBOUND:
8412 			case OUTBOUND:
8413 			case UNBOUNDED:
8414 			case INFINITE:
8415 			case LOGIN:
8416 			case MASKED:
8417 			case MAXDOP:
8418 			case MOVE:
8419 			case NOCHECK:
8420 			case OBJECT:
8421 			case ONLINE:
8422 			case OVER:
8423 			case PAGE:
8424 			case PAUSED:
8425 			case PERIOD:
8426 			case PERSISTED:
8427 			case PRECEDING:
8428 			case RANDOMIZED:
8429 			case RANGE:
8430 			case REBUILD:
8431 			case REPLICATE:
8432 			case REPLICATION:
8433 			case RESUMABLE:
8434 			case ROWGUIDCOL:
8435 			case SAVE:
8436 			case SELF:
8437 			case SPARSE:
8438 			case SWITCH:
8439 			case TRAN:
8440 			case TRANCOUNT:
8441 			case CONTROL:
8442 			case CONCAT:
8443 			case TAKE:
8444 			case OWNERSHIP:
8445 			case DEFINITION:
8446 			case APPLICATION:
8447 			case ASSEMBLY:
8448 			case SYMMETRIC:
8449 			case ASYMMETRIC:
8450 			case SERVER:
8451 			case RECEIVE:
8452 			case CHANGE:
8453 			case TRACE:
8454 			case TRACKING:
8455 			case RESOURCES:
8456 			case SETTINGS:
8457 			case STATE:
8458 			case AVAILABILITY:
8459 			case CREDENTIAL:
8460 			case ENDPOINT:
8461 			case EVENT:
8462 			case NOTIFICATION:
8463 			case LINKED:
8464 			case AUDIT:
8465 			case DDL:
8466 			case XML:
8467 			case IMPERSONATE:
8468 			case SECURABLES:
8469 			case AUTHENTICATE:
8470 			case EXTERNAL:
8471 			case ACCESS:
8472 			case ADMINISTER:
8473 			case BULK:
8474 			case OPERATIONS:
8475 			case UNSAFE:
8476 			case SHUTDOWN:
8477 			case SCOPED:
8478 			case CONFIGURATION:
8479 			case DATASPACE:
8480 			case SERVICE:
8481 			case CERTIFICATE:
8482 			case CONTRACT:
8483 			case ENCRYPTION:
8484 			case MASTER:
8485 			case DATA:
8486 			case SOURCE:
8487 			case FILE:
8488 			case FORMAT:
8489 			case LIBRARY:
8490 			case FULLTEXT:
8491 			case MASK:
8492 			case UNMASK:
8493 			case MESSAGE:
8494 			case REMOTE:
8495 			case BINDING:
8496 			case ROUTE:
8497 			case SECURITY:
8498 			case POLICY:
8499 			case AGGREGATE:
8500 			case QUEUE:
8501 			case RULE:
8502 			case SYNONYM:
8503 			case COLLECTION:
8504 			case SCRIPT:
8505 			case KILL:
8506 			case BACKUP:
8507 			case LOG:
8508 			case SHOWPLAN:
8509 			case SUBSCRIBE:
8510 			case QUERY:
8511 			case NOTIFICATIONS:
8512 			case CHECKPOINT:
8513 			case SEQUENCE:
8514 			case ABORT_AFTER_WAIT:
8515 			case ALLOW_PAGE_LOCKS:
8516 			case ALLOW_ROW_LOCKS:
8517 			case ALL_SPARSE_COLUMNS:
8518 			case BUCKET_COUNT:
8519 			case COLUMNSTORE_ARCHIVE:
8520 			case COLUMN_ENCRYPTION_KEY:
8521 			case COLUMN_SET:
8522 			case COMPRESSION_DELAY:
8523 			case DATABASE_DEAULT:
8524 			case DATA_COMPRESSION:
8525 			case DATA_CONSISTENCY_CHECK:
8526 			case ENCRYPTION_TYPE:
8527 			case SYSTEM_TIME:
8528 			case SYSTEM_VERSIONING:
8529 			case TEXTIMAGE_ON:
8530 			case WAIT_AT_LOW_PRIORITY:
8531 			case STATISTICS_INCREMENTAL:
8532 			case STATISTICS_NORECOMPUTE:
8533 			case ROUND_ROBIN:
8534 			case SCHEMA_AND_DATA:
8535 			case SCHEMA_ONLY:
8536 			case SORT_IN_TEMPDB:
8537 			case IGNORE_DUP_KEY:
8538 			case IMPLICIT_TRANSACTIONS:
8539 			case MAX_DURATION:
8540 			case MEMORY_OPTIMIZED:
8541 			case MIGRATION_STATE:
8542 			case PAD_INDEX:
8543 			case REMOTE_DATA_ARCHIVE:
8544 			case FILESTREAM_ON:
8545 			case FILETABLE_COLLATE_FILENAME:
8546 			case FILETABLE_DIRECTORY:
8547 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
8548 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
8549 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
8550 			case FILTER_PREDICATE:
8551 			case HISTORY_RETENTION_PERIOD:
8552 			case HISTORY_TABLE:
8553 			case LOCK_ESCALATION:
8554 			case DROP_EXISTING:
8555 			case ROW_NUMBER:
8556 			case FIRST:
8557 			case DATETIME2:
8558 			case OUTPUT:
8559 			case INSERTED:
8560 			case DELETED:
8561 			case FILENAME:
8562 			case SIZE:
8563 			case MAXSIZE:
8564 			case FILEGROWTH:
8565 			case UNLIMITED:
8566 			case KB:
8567 			case MB:
8568 			case GB:
8569 			case TB:
8570 			case CONTAINS:
8571 			case MEMORY_OPTIMIZED_DATA:
8572 			case FILEGROUP:
8573 			case NON_TRANSACTED_ACCESS:
8574 			case DB_CHAINING:
8575 			case TRUSTWORTHY:
8576 			case FORWARD_ONLY:
8577 			case KEYSET:
8578 			case FAST_FORWARD:
8579 			case SCROLL_LOCKS:
8580 			case OPTIMISTIC:
8581 			case TYPE_WARNING:
8582 			case SCHEMABINDING:
8583 			case CALLER:
8584 			case OWNER:
8585 			case SNAPSHOT:
8586 			case REPEATABLE:
8587 			case SERIALIZABLE:
8588 			case NATIVE_COMPILATION:
8589 			case VIEW_METADATA:
8590 			case INSTEAD:
8591 			case APPEND:
8592 			case INCREMENT:
8593 			case CACHE:
8594 			case MINVALUE:
8595 			case MAXVALUE:
8596 			case RESTART:
8597 			case LOB_COMPACTION:
8598 			case COMPRESS_ALL_ROW_GROUPS:
8599 			case REORGANIZE:
8600 			case RESUME:
8601 			case PAUSE:
8602 			case ABORT:
8603 			case ACCELERATED_DATABASE_RECOVERY:
8604 			case PERSISTENT_VERSION_STORE_FILEGROUP:
8605 			case IMMEDIATE:
8606 			case NO_WAIT:
8607 			case TARGET_RECOVERY_TIME:
8608 			case SECONDS:
8609 			case HONOR_BROKER_PRIORITY:
8610 			case ERROR_BROKER_CONVERSATIONS:
8611 			case NEW_BROKER:
8612 			case DISABLE_BROKER:
8613 			case ENABLE_BROKER:
8614 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
8615 			case READ_COMMITTED_SNAPSHOT:
8616 			case ALLOW_SNAPSHOT_ISOLATION:
8617 			case RECURSIVE_TRIGGERS:
8618 			case QUOTED_IDENTIFIER:
8619 			case NUMERIC_ROUNDABORT:
8620 			case CONCAT_NULL_YIELDS_NULL:
8621 			case COMPATIBILITY_LEVEL:
8622 			case ARITHABORT:
8623 			case ANSI_WARNINGS:
8624 			case ANSI_PADDING:
8625 			case ANSI_NULLS:
8626 			case ANSI_NULL_DEFAULT:
8627 			case PAGE_VERIFY:
8628 			case CHECKSUM:
8629 			case TORN_PAGE_DETECTION:
8630 			case BULK_LOGGED:
8631 			case RECOVERY:
8632 			case TOTAL_EXECUTION_CPU_TIME_MS:
8633 			case TOTAL_COMPILE_CPU_TIME_MS:
8634 			case STALE_CAPTURE_POLICY_THRESHOLD:
8635 			case EXECUTION_COUNT:
8636 			case QUERY_CAPTURE_POLICY:
8637 			case WAIT_STATS_CAPTURE_MODE:
8638 			case MAX_PLANS_PER_QUERY:
8639 			case QUERY_CAPTURE_MODE:
8640 			case SIZE_BASED_CLEANUP_MODE:
8641 			case INTERVAL_LENGTH_MINUTES:
8642 			case MAX_STORAGE_SIZE_MB:
8643 			case DATA_FLUSH_INTERVAL_SECONDS:
8644 			case CLEANUP_POLICY:
8645 			case CUSTOM:
8646 			case STALE_QUERY_THRESHOLD_DAYS:
8647 			case OPERATION_MODE:
8648 			case QUERY_STORE:
8649 			case CURSOR_DEFAULT:
8650 			case GLOBAL:
8651 			case CURSOR_CLOSE_ON_COMMIT:
8652 			case HOURS:
8653 			case CHANGE_RETENTION:
8654 			case AUTO_CLEANUP:
8655 			case CHANGE_TRACKING:
8656 			case AUTOMATIC_TUNING:
8657 			case FORCE_LAST_GOOD_PLAN:
8658 			case AUTO_UPDATE_STATISTICS_ASYNC:
8659 			case AUTO_UPDATE_STATISTICS:
8660 			case AUTO_SHRINK:
8661 			case AUTO_CREATE_STATISTICS:
8662 			case INCREMENTAL:
8663 			case AUTO_CLOSE:
8664 			case DATA_RETENTION:
8665 			case TEMPORAL_HISTORY_RETENTION:
8666 			case EDITION:
8667 			case MIXED_PAGE_ALLOCATION:
8668 			case DISABLED:
8669 			case ALLOWED:
8670 			case HADR:
8671 			case MULTI_USER:
8672 			case RESTRICTED_USER:
8673 			case SINGLE_USER:
8674 			case OFFLINE:
8675 			case EMERGENCY:
8676 			case SUSPEND:
8677 			case DATE_CORRELATION_OPTIMIZATION:
8678 			case ELASTIC_POOL:
8679 			case SERVICE_OBJECTIVE:
8680 			case DATABASE_NAME:
8681 			case ALLOW_CONNECTIONS:
8682 			case GEO:
8683 			case NAMED:
8684 			case DATEFIRST:
8685 			case BACKUP_STORAGE_REDUNDANCY:
8686 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
8687 			case SECONDARY:
8688 			case FAILOVER:
8689 			case DEFAULT_FULLTEXT_LANGUAGE:
8690 			case DEFAULT_LANGUAGE:
8691 			case INLINE:
8692 			case NESTED_TRIGGERS:
8693 			case TRANSFORM_NOISE_WORDS:
8694 			case TWO_DIGIT_YEAR_CUTOFF:
8695 			case PERSISTENT_LOG_BUFFER:
8696 			case DIRECTORY_NAME:
8697 			case DATEFORMAT:
8698 			case DELAYED_DURABILITY:
8699 			case AUTHORIZATION:
8700 			case TRANSFER:
8701 			case PROVIDER:
8702 			case SEARCH:
8703 			case MEMBER:
8704 			case OPENJSON:
8705 			case OPENROWSET:
8706 			case IDENTIFIER_:
8707 			case DELIMITED_IDENTIFIER_:
8708 			case STRING_:
8709 			case NUMBER_:
8710 			case HEX_DIGIT_:
8711 			case BIT_NUM_:
8712 			case NCHAR_TEXT:
8713 				{
8714 				setState(1658);
8715 				expr(0);
8716 				setState(1663);
8717 				_errHandler.sync(this);
8718 				_la = _input.LA(1);
8719 				while (_la==COMMA_) {
8720 					{
8721 					{
8722 					setState(1659);
8723 					match(COMMA_);
8724 					setState(1660);
8725 					expr(0);
8726 					}
8727 					}
8728 					setState(1665);
8729 					_errHandler.sync(this);
8730 					_la = _input.LA(1);
8731 				}
8732 				}
8733 				break;
8734 			case ASTERISK_:
8735 				{
8736 				setState(1666);
8737 				match(ASTERISK_);
8738 				}
8739 				break;
8740 			case RP_:
8741 				break;
8742 			default:
8743 				break;
8744 			}
8745 			setState(1669);
8746 			match(RP_);
8747 			}
8748 		}
8749 		catch (RecognitionException re) {
8750 			_localctx.exception = re;
8751 			_errHandler.reportError(this, re);
8752 			_errHandler.recover(this, re);
8753 		}
8754 		finally {
8755 			exitRule();
8756 		}
8757 		return _localctx;
8758 	}
8759 
8760 	public static class RegularFunctionNameContext extends ParserRuleContext {
8761 		public IdentifierContext identifier() {
8762 			return getRuleContext(IdentifierContext.class,0);
8763 		}
8764 		public OwnerContext owner() {
8765 			return getRuleContext(OwnerContext.class,0);
8766 		}
8767 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
8768 		public TerminalNode IF() { return getToken(SQLServerStatementParser.IF, 0); }
8769 		public TerminalNode LOCALTIME() { return getToken(SQLServerStatementParser.LOCALTIME, 0); }
8770 		public TerminalNode LOCALTIMESTAMP() { return getToken(SQLServerStatementParser.LOCALTIMESTAMP, 0); }
8771 		public TerminalNode INTERVAL() { return getToken(SQLServerStatementParser.INTERVAL, 0); }
8772 		public RegularFunctionNameContext(ParserRuleContext parent, int invokingState) {
8773 			super(parent, invokingState);
8774 		}
8775 		@Override public int getRuleIndex() { return RULE_regularFunctionName; }
8776 		@Override
8777 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8778 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularFunctionName(this);
8779 			else return visitor.visitChildren(this);
8780 		}
8781 	}
8782 
8783 	public final RegularFunctionNameContext regularFunctionName() throws RecognitionException {
8784 		RegularFunctionNameContext _localctx = new RegularFunctionNameContext(_ctx, getState());
8785 		enterRule(_localctx, 144, RULE_regularFunctionName);
8786 		try {
8787 			setState(1681);
8788 			_errHandler.sync(this);
8789 			switch ( getInterpreter().adaptivePredict(_input,82,_ctx) ) {
8790 			case 1:
8791 				enterOuterAlt(_localctx, 1);
8792 				{
8793 				setState(1674);
8794 				_errHandler.sync(this);
8795 				switch ( getInterpreter().adaptivePredict(_input,81,_ctx) ) {
8796 				case 1:
8797 					{
8798 					setState(1671);
8799 					owner();
8800 					setState(1672);
8801 					match(DOT_);
8802 					}
8803 					break;
8804 				}
8805 				setState(1676);
8806 				identifier();
8807 				}
8808 				break;
8809 			case 2:
8810 				enterOuterAlt(_localctx, 2);
8811 				{
8812 				setState(1677);
8813 				match(IF);
8814 				}
8815 				break;
8816 			case 3:
8817 				enterOuterAlt(_localctx, 3);
8818 				{
8819 				setState(1678);
8820 				match(LOCALTIME);
8821 				}
8822 				break;
8823 			case 4:
8824 				enterOuterAlt(_localctx, 4);
8825 				{
8826 				setState(1679);
8827 				match(LOCALTIMESTAMP);
8828 				}
8829 				break;
8830 			case 5:
8831 				enterOuterAlt(_localctx, 5);
8832 				{
8833 				setState(1680);
8834 				match(INTERVAL);
8835 				}
8836 				break;
8837 			}
8838 		}
8839 		catch (RecognitionException re) {
8840 			_localctx.exception = re;
8841 			_errHandler.reportError(this, re);
8842 			_errHandler.recover(this, re);
8843 		}
8844 		finally {
8845 			exitRule();
8846 		}
8847 		return _localctx;
8848 	}
8849 
8850 	public static class CaseExpressionContext extends ParserRuleContext {
8851 		public TerminalNode CASE() { return getToken(SQLServerStatementParser.CASE, 0); }
8852 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
8853 		public SimpleExprContext simpleExpr() {
8854 			return getRuleContext(SimpleExprContext.class,0);
8855 		}
8856 		public List<CaseWhenContext> caseWhen() {
8857 			return getRuleContexts(CaseWhenContext.class);
8858 		}
8859 		public CaseWhenContext caseWhen(int i) {
8860 			return getRuleContext(CaseWhenContext.class,i);
8861 		}
8862 		public CaseElseContext caseElse() {
8863 			return getRuleContext(CaseElseContext.class,0);
8864 		}
8865 		public CaseExpressionContext(ParserRuleContext parent, int invokingState) {
8866 			super(parent, invokingState);
8867 		}
8868 		@Override public int getRuleIndex() { return RULE_caseExpression; }
8869 		@Override
8870 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8871 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseExpression(this);
8872 			else return visitor.visitChildren(this);
8873 		}
8874 	}
8875 
8876 	public final CaseExpressionContext caseExpression() throws RecognitionException {
8877 		CaseExpressionContext _localctx = new CaseExpressionContext(_ctx, getState());
8878 		enterRule(_localctx, 146, RULE_caseExpression);
8879 		int _la;
8880 		try {
8881 			enterOuterAlt(_localctx, 1);
8882 			{
8883 			setState(1683);
8884 			match(CASE);
8885 			setState(1685);
8886 			_errHandler.sync(this);
8887 			_la = _input.LA(1);
8888 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CASE - 69)) | (1L << (CAST - 69)) | (1L << (SUBSTRING - 69)) | (1L << (OFF - 69)) | (1L << (IF - 69)) | (1L << (NULL - 69)) | (1L << (TRUE - 69)) | (1L << (FALSE - 69)) | (1L << (EXISTS - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)) | (1L << (CHAR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (INTERVAL - 133)) | (1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (QUARTER - 133)) | (1L << (MONTH - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)) | (1L << (AUTO - 203)) | (1L << (BLOCKERS - 203)) | (1L << (CLUSTERED - 203)) | (1L << (NONCLUSTERED - 203)) | (1L << (COLUMNSTORE - 203)) | (1L << (CONTENT - 203)) | (1L << (CONVERT - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)) | (1L << (MINUTES - 267)) | (1L << (DENY - 267)) | (1L << (DETERMINISTIC - 267)) | (1L << (DISTRIBUTION - 267)) | (1L << (DOCUMENT - 267)) | (1L << (DURABILITY - 267)) | (1L << (ENCRYPTED - 267)) | (1L << (FILESTREAM - 267)) | (1L << (FILETABLE - 267)) | (1L << (FILLFACTOR - 267)) | (1L << (FOLLOWING - 267)) | (1L << (HASH - 267)) | (1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)) | (1L << (CONTROL - 267)) | (1L << (CONCAT - 267)) | (1L << (TAKE - 267)) | (1L << (OWNERSHIP - 267)) | (1L << (DEFINITION - 267)) | (1L << (APPLICATION - 267)) | (1L << (ASSEMBLY - 267)))) != 0) || ((((_la - 331)) & ~0x3f) == 0 && ((1L << (_la - 331)) & ((1L << (SYMMETRIC - 331)) | (1L << (ASYMMETRIC - 331)) | (1L << (SERVER - 331)) | (1L << (RECEIVE - 331)) | (1L << (CHANGE - 331)) | (1L << (TRACE - 331)) | (1L << (TRACKING - 331)) | (1L << (RESOURCES - 331)) | (1L << (SETTINGS - 331)) | (1L << (STATE - 331)) | (1L << (AVAILABILITY - 331)) | (1L << (CREDENTIAL - 331)) | (1L << (ENDPOINT - 331)) | (1L << (EVENT - 331)) | (1L << (NOTIFICATION - 331)) | (1L << (LINKED - 331)) | (1L << (AUDIT - 331)) | (1L << (DDL - 331)) | (1L << (XML - 331)) | (1L << (IMPERSONATE - 331)) | (1L << (SECURABLES - 331)) | (1L << (AUTHENTICATE - 331)) | (1L << (EXTERNAL - 331)) | (1L << (ACCESS - 331)) | (1L << (ADMINISTER - 331)) | (1L << (BULK - 331)) | (1L << (OPERATIONS - 331)) | (1L << (UNSAFE - 331)) | (1L << (SHUTDOWN - 331)) | (1L << (SCOPED - 331)) | (1L << (CONFIGURATION - 331)) | (1L << (DATASPACE - 331)) | (1L << (SERVICE - 331)) | (1L << (CERTIFICATE - 331)) | (1L << (CONTRACT - 331)) | (1L << (ENCRYPTION - 331)) | (1L << (MASTER - 331)) | (1L << (DATA - 331)) | (1L << (SOURCE - 331)) | (1L << (FILE - 331)) | (1L << (FORMAT - 331)) | (1L << (LIBRARY - 331)) | (1L << (FULLTEXT - 331)) | (1L << (MASK - 331)) | (1L << (UNMASK - 331)) | (1L << (MESSAGE - 331)) | (1L << (REMOTE - 331)) | (1L << (BINDING - 331)) | (1L << (ROUTE - 331)) | (1L << (SECURITY - 331)) | (1L << (POLICY - 331)) | (1L << (AGGREGATE - 331)) | (1L << (QUEUE - 331)) | (1L << (RULE - 331)) | (1L << (SYNONYM - 331)) | (1L << (COLLECTION - 331)) | (1L << (SCRIPT - 331)) | (1L << (KILL - 331)) | (1L << (BACKUP - 331)) | (1L << (LOG - 331)) | (1L << (SHOWPLAN - 331)) | (1L << (SUBSCRIBE - 331)) | (1L << (QUERY - 331)) | (1L << (NOTIFICATIONS - 331)))) != 0) || ((((_la - 395)) & ~0x3f) == 0 && ((1L << (_la - 395)) & ((1L << (CHECKPOINT - 395)) | (1L << (SEQUENCE - 395)) | (1L << (ABORT_AFTER_WAIT - 395)) | (1L << (ALLOW_PAGE_LOCKS - 395)) | (1L << (ALLOW_ROW_LOCKS - 395)) | (1L << (ALL_SPARSE_COLUMNS - 395)) | (1L << (BUCKET_COUNT - 395)) | (1L << (COLUMNSTORE_ARCHIVE - 395)) | (1L << (COLUMN_ENCRYPTION_KEY - 395)) | (1L << (COLUMN_SET - 395)) | (1L << (COMPRESSION_DELAY - 395)) | (1L << (DATABASE_DEAULT - 395)) | (1L << (DATA_COMPRESSION - 395)) | (1L << (DATA_CONSISTENCY_CHECK - 395)) | (1L << (ENCRYPTION_TYPE - 395)) | (1L << (SYSTEM_TIME - 395)) | (1L << (SYSTEM_VERSIONING - 395)) | (1L << (TEXTIMAGE_ON - 395)) | (1L << (WAIT_AT_LOW_PRIORITY - 395)) | (1L << (STATISTICS_INCREMENTAL - 395)) | (1L << (STATISTICS_NORECOMPUTE - 395)) | (1L << (ROUND_ROBIN - 395)) | (1L << (SCHEMA_AND_DATA - 395)) | (1L << (SCHEMA_ONLY - 395)) | (1L << (SORT_IN_TEMPDB - 395)) | (1L << (IGNORE_DUP_KEY - 395)) | (1L << (IMPLICIT_TRANSACTIONS - 395)) | (1L << (MAX_DURATION - 395)) | (1L << (MEMORY_OPTIMIZED - 395)) | (1L << (MIGRATION_STATE - 395)) | (1L << (PAD_INDEX - 395)) | (1L << (REMOTE_DATA_ARCHIVE - 395)) | (1L << (FILESTREAM_ON - 395)) | (1L << (FILETABLE_COLLATE_FILENAME - 395)) | (1L << (FILETABLE_DIRECTORY - 395)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILTER_PREDICATE - 395)) | (1L << (HISTORY_RETENTION_PERIOD - 395)) | (1L << (HISTORY_TABLE - 395)) | (1L << (LOCK_ESCALATION - 395)) | (1L << (DROP_EXISTING - 395)) | (1L << (ROW_NUMBER - 395)) | (1L << (FIRST - 395)) | (1L << (DATETIME2 - 395)) | (1L << (OUTPUT - 395)))) != 0) || ((((_la - 459)) & ~0x3f) == 0 && ((1L << (_la - 459)) & ((1L << (INSERTED - 459)) | (1L << (DELETED - 459)) | (1L << (FILENAME - 459)) | (1L << (SIZE - 459)) | (1L << (MAXSIZE - 459)) | (1L << (FILEGROWTH - 459)) | (1L << (UNLIMITED - 459)) | (1L << (KB - 459)) | (1L << (MB - 459)) | (1L << (GB - 459)) | (1L << (TB - 459)) | (1L << (CONTAINS - 459)) | (1L << (MEMORY_OPTIMIZED_DATA - 459)) | (1L << (FILEGROUP - 459)) | (1L << (NON_TRANSACTED_ACCESS - 459)) | (1L << (DB_CHAINING - 459)) | (1L << (TRUSTWORTHY - 459)) | (1L << (FORWARD_ONLY - 459)) | (1L << (KEYSET - 459)) | (1L << (FAST_FORWARD - 459)) | (1L << (SCROLL_LOCKS - 459)) | (1L << (OPTIMISTIC - 459)) | (1L << (TYPE_WARNING - 459)) | (1L << (SCHEMABINDING - 459)) | (1L << (CALLER - 459)))) != 0) || ((((_la - 527)) & ~0x3f) == 0 && ((1L << (_la - 527)) & ((1L << (OWNER - 527)) | (1L << (SNAPSHOT - 527)) | (1L << (REPEATABLE - 527)) | (1L << (SERIALIZABLE - 527)) | (1L << (NATIVE_COMPILATION - 527)) | (1L << (VIEW_METADATA - 527)) | (1L << (INSTEAD - 527)) | (1L << (APPEND - 527)) | (1L << (INCREMENT - 527)) | (1L << (CACHE - 527)) | (1L << (MINVALUE - 527)) | (1L << (MAXVALUE - 527)) | (1L << (RESTART - 527)) | (1L << (LOB_COMPACTION - 527)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 527)) | (1L << (REORGANIZE - 527)) | (1L << (RESUME - 527)) | (1L << (PAUSE - 527)) | (1L << (ABORT - 527)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 527)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 527)) | (1L << (IMMEDIATE - 527)) | (1L << (NO_WAIT - 527)) | (1L << (TARGET_RECOVERY_TIME - 527)) | (1L << (SECONDS - 527)) | (1L << (HONOR_BROKER_PRIORITY - 527)) | (1L << (ERROR_BROKER_CONVERSATIONS - 527)) | (1L << (NEW_BROKER - 527)) | (1L << (DISABLE_BROKER - 527)) | (1L << (ENABLE_BROKER - 527)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 527)) | (1L << (READ_COMMITTED_SNAPSHOT - 527)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 527)) | (1L << (RECURSIVE_TRIGGERS - 527)) | (1L << (QUOTED_IDENTIFIER - 527)) | (1L << (NUMERIC_ROUNDABORT - 527)) | (1L << (CONCAT_NULL_YIELDS_NULL - 527)) | (1L << (COMPATIBILITY_LEVEL - 527)) | (1L << (ARITHABORT - 527)) | (1L << (ANSI_WARNINGS - 527)) | (1L << (ANSI_PADDING - 527)) | (1L << (ANSI_NULLS - 527)) | (1L << (ANSI_NULL_DEFAULT - 527)) | (1L << (PAGE_VERIFY - 527)) | (1L << (CHECKSUM - 527)) | (1L << (TORN_PAGE_DETECTION - 527)) | (1L << (BULK_LOGGED - 527)))) != 0) || ((((_la - 591)) & ~0x3f) == 0 && ((1L << (_la - 591)) & ((1L << (RECOVERY - 591)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 591)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 591)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 591)) | (1L << (EXECUTION_COUNT - 591)) | (1L << (QUERY_CAPTURE_POLICY - 591)) | (1L << (WAIT_STATS_CAPTURE_MODE - 591)) | (1L << (MAX_PLANS_PER_QUERY - 591)) | (1L << (QUERY_CAPTURE_MODE - 591)) | (1L << (SIZE_BASED_CLEANUP_MODE - 591)) | (1L << (INTERVAL_LENGTH_MINUTES - 591)) | (1L << (MAX_STORAGE_SIZE_MB - 591)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 591)) | (1L << (CLEANUP_POLICY - 591)) | (1L << (CUSTOM - 591)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 591)) | (1L << (OPERATION_MODE - 591)) | (1L << (QUERY_STORE - 591)) | (1L << (CURSOR_DEFAULT - 591)) | (1L << (GLOBAL - 591)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 591)) | (1L << (HOURS - 591)) | (1L << (CHANGE_RETENTION - 591)) | (1L << (AUTO_CLEANUP - 591)) | (1L << (CHANGE_TRACKING - 591)) | (1L << (AUTOMATIC_TUNING - 591)) | (1L << (FORCE_LAST_GOOD_PLAN - 591)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 591)) | (1L << (AUTO_UPDATE_STATISTICS - 591)) | (1L << (AUTO_SHRINK - 591)) | (1L << (AUTO_CREATE_STATISTICS - 591)) | (1L << (INCREMENTAL - 591)) | (1L << (AUTO_CLOSE - 591)) | (1L << (DATA_RETENTION - 591)) | (1L << (TEMPORAL_HISTORY_RETENTION - 591)) | (1L << (EDITION - 591)) | (1L << (MIXED_PAGE_ALLOCATION - 591)) | (1L << (DISABLED - 591)) | (1L << (ALLOWED - 591)) | (1L << (HADR - 591)) | (1L << (MULTI_USER - 591)) | (1L << (RESTRICTED_USER - 591)) | (1L << (SINGLE_USER - 591)) | (1L << (OFFLINE - 591)) | (1L << (EMERGENCY - 591)) | (1L << (SUSPEND - 591)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 591)) | (1L << (ELASTIC_POOL - 591)) | (1L << (SERVICE_OBJECTIVE - 591)) | (1L << (DATABASE_NAME - 591)) | (1L << (ALLOW_CONNECTIONS - 591)) | (1L << (GEO - 591)) | (1L << (NAMED - 591)) | (1L << (DATEFIRST - 591)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 591)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 591)) | (1L << (SECONDARY - 591)) | (1L << (FAILOVER - 591)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 591)) | (1L << (DEFAULT_LANGUAGE - 591)) | (1L << (INLINE - 591)) | (1L << (NESTED_TRIGGERS - 591)) | (1L << (TRANSFORM_NOISE_WORDS - 591)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 591)))) != 0) || ((((_la - 655)) & ~0x3f) == 0 && ((1L << (_la - 655)) & ((1L << (PERSISTENT_LOG_BUFFER - 655)) | (1L << (DIRECTORY_NAME - 655)) | (1L << (DATEFORMAT - 655)) | (1L << (DELAYED_DURABILITY - 655)) | (1L << (AUTHORIZATION - 655)) | (1L << (TRANSFER - 655)) | (1L << (PROVIDER - 655)) | (1L << (SEARCH - 655)) | (1L << (MEMBER - 655)) | (1L << (OPENJSON - 655)) | (1L << (OPENROWSET - 655)) | (1L << (IDENTIFIER_ - 655)) | (1L << (DELIMITED_IDENTIFIER_ - 655)) | (1L << (STRING_ - 655)) | (1L << (NUMBER_ - 655)))) != 0) || ((((_la - 719)) & ~0x3f) == 0 && ((1L << (_la - 719)) & ((1L << (HEX_DIGIT_ - 719)) | (1L << (BIT_NUM_ - 719)) | (1L << (NCHAR_TEXT - 719)))) != 0)) {
8889 				{
8890 				setState(1684);
8891 				simpleExpr(0);
8892 				}
8893 			}
8894 
8895 			setState(1688); 
8896 			_errHandler.sync(this);
8897 			_la = _input.LA(1);
8898 			do {
8899 				{
8900 				{
8901 				setState(1687);
8902 				caseWhen();
8903 				}
8904 				}
8905 				setState(1690); 
8906 				_errHandler.sync(this);
8907 				_la = _input.LA(1);
8908 			} while ( _la==WHEN );
8909 			setState(1693);
8910 			_errHandler.sync(this);
8911 			_la = _input.LA(1);
8912 			if (_la==ELSE) {
8913 				{
8914 				setState(1692);
8915 				caseElse();
8916 				}
8917 			}
8918 
8919 			setState(1695);
8920 			match(END);
8921 			}
8922 		}
8923 		catch (RecognitionException re) {
8924 			_localctx.exception = re;
8925 			_errHandler.reportError(this, re);
8926 			_errHandler.recover(this, re);
8927 		}
8928 		finally {
8929 			exitRule();
8930 		}
8931 		return _localctx;
8932 	}
8933 
8934 	public static class CaseWhenContext extends ParserRuleContext {
8935 		public TerminalNode WHEN() { return getToken(SQLServerStatementParser.WHEN, 0); }
8936 		public List<ExprContext> expr() {
8937 			return getRuleContexts(ExprContext.class);
8938 		}
8939 		public ExprContext expr(int i) {
8940 			return getRuleContext(ExprContext.class,i);
8941 		}
8942 		public TerminalNode THEN() { return getToken(SQLServerStatementParser.THEN, 0); }
8943 		public CaseWhenContext(ParserRuleContext parent, int invokingState) {
8944 			super(parent, invokingState);
8945 		}
8946 		@Override public int getRuleIndex() { return RULE_caseWhen; }
8947 		@Override
8948 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8949 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseWhen(this);
8950 			else return visitor.visitChildren(this);
8951 		}
8952 	}
8953 
8954 	public final CaseWhenContext caseWhen() throws RecognitionException {
8955 		CaseWhenContext _localctx = new CaseWhenContext(_ctx, getState());
8956 		enterRule(_localctx, 148, RULE_caseWhen);
8957 		try {
8958 			enterOuterAlt(_localctx, 1);
8959 			{
8960 			setState(1697);
8961 			match(WHEN);
8962 			setState(1698);
8963 			expr(0);
8964 			setState(1699);
8965 			match(THEN);
8966 			setState(1700);
8967 			expr(0);
8968 			}
8969 		}
8970 		catch (RecognitionException re) {
8971 			_localctx.exception = re;
8972 			_errHandler.reportError(this, re);
8973 			_errHandler.recover(this, re);
8974 		}
8975 		finally {
8976 			exitRule();
8977 		}
8978 		return _localctx;
8979 	}
8980 
8981 	public static class CaseElseContext extends ParserRuleContext {
8982 		public TerminalNode ELSE() { return getToken(SQLServerStatementParser.ELSE, 0); }
8983 		public ExprContext expr() {
8984 			return getRuleContext(ExprContext.class,0);
8985 		}
8986 		public CaseElseContext(ParserRuleContext parent, int invokingState) {
8987 			super(parent, invokingState);
8988 		}
8989 		@Override public int getRuleIndex() { return RULE_caseElse; }
8990 		@Override
8991 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8992 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseElse(this);
8993 			else return visitor.visitChildren(this);
8994 		}
8995 	}
8996 
8997 	public final CaseElseContext caseElse() throws RecognitionException {
8998 		CaseElseContext _localctx = new CaseElseContext(_ctx, getState());
8999 		enterRule(_localctx, 150, RULE_caseElse);
9000 		try {
9001 			enterOuterAlt(_localctx, 1);
9002 			{
9003 			setState(1702);
9004 			match(ELSE);
9005 			setState(1703);
9006 			expr(0);
9007 			}
9008 		}
9009 		catch (RecognitionException re) {
9010 			_localctx.exception = re;
9011 			_errHandler.reportError(this, re);
9012 			_errHandler.recover(this, re);
9013 		}
9014 		finally {
9015 			exitRule();
9016 		}
9017 		return _localctx;
9018 	}
9019 
9020 	public static class PrivateExprOfDbContext extends ParserRuleContext {
9021 		public WindowedFunctionContext windowedFunction() {
9022 			return getRuleContext(WindowedFunctionContext.class,0);
9023 		}
9024 		public AtTimeZoneExprContext atTimeZoneExpr() {
9025 			return getRuleContext(AtTimeZoneExprContext.class,0);
9026 		}
9027 		public CastExprContext castExpr() {
9028 			return getRuleContext(CastExprContext.class,0);
9029 		}
9030 		public ConvertExprContext convertExpr() {
9031 			return getRuleContext(ConvertExprContext.class,0);
9032 		}
9033 		public PrivateExprOfDbContext(ParserRuleContext parent, int invokingState) {
9034 			super(parent, invokingState);
9035 		}
9036 		@Override public int getRuleIndex() { return RULE_privateExprOfDb; }
9037 		@Override
9038 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9039 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrivateExprOfDb(this);
9040 			else return visitor.visitChildren(this);
9041 		}
9042 	}
9043 
9044 	public final PrivateExprOfDbContext privateExprOfDb() throws RecognitionException {
9045 		PrivateExprOfDbContext _localctx = new PrivateExprOfDbContext(_ctx, getState());
9046 		enterRule(_localctx, 152, RULE_privateExprOfDb);
9047 		try {
9048 			setState(1709);
9049 			_errHandler.sync(this);
9050 			switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) {
9051 			case 1:
9052 				enterOuterAlt(_localctx, 1);
9053 				{
9054 				setState(1705);
9055 				windowedFunction();
9056 				}
9057 				break;
9058 			case 2:
9059 				enterOuterAlt(_localctx, 2);
9060 				{
9061 				setState(1706);
9062 				atTimeZoneExpr();
9063 				}
9064 				break;
9065 			case 3:
9066 				enterOuterAlt(_localctx, 3);
9067 				{
9068 				setState(1707);
9069 				castExpr();
9070 				}
9071 				break;
9072 			case 4:
9073 				enterOuterAlt(_localctx, 4);
9074 				{
9075 				setState(1708);
9076 				convertExpr();
9077 				}
9078 				break;
9079 			}
9080 		}
9081 		catch (RecognitionException re) {
9082 			_localctx.exception = re;
9083 			_errHandler.reportError(this, re);
9084 			_errHandler.recover(this, re);
9085 		}
9086 		finally {
9087 			exitRule();
9088 		}
9089 		return _localctx;
9090 	}
9091 
9092 	public static class OrderByClauseContext extends ParserRuleContext {
9093 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
9094 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
9095 		public List<OrderByItemContext> orderByItem() {
9096 			return getRuleContexts(OrderByItemContext.class);
9097 		}
9098 		public OrderByItemContext orderByItem(int i) {
9099 			return getRuleContext(OrderByItemContext.class,i);
9100 		}
9101 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
9102 		public TerminalNode COMMA_(int i) {
9103 			return getToken(SQLServerStatementParser.COMMA_, i);
9104 		}
9105 		public TerminalNode OFFSET() { return getToken(SQLServerStatementParser.OFFSET, 0); }
9106 		public List<ExprContext> expr() {
9107 			return getRuleContexts(ExprContext.class);
9108 		}
9109 		public ExprContext expr(int i) {
9110 			return getRuleContext(ExprContext.class,i);
9111 		}
9112 		public List<TerminalNode> ROW() { return getTokens(SQLServerStatementParser.ROW); }
9113 		public TerminalNode ROW(int i) {
9114 			return getToken(SQLServerStatementParser.ROW, i);
9115 		}
9116 		public List<TerminalNode> ROWS() { return getTokens(SQLServerStatementParser.ROWS); }
9117 		public TerminalNode ROWS(int i) {
9118 			return getToken(SQLServerStatementParser.ROWS, i);
9119 		}
9120 		public TerminalNode FETCH() { return getToken(SQLServerStatementParser.FETCH, 0); }
9121 		public TerminalNode ONLY() { return getToken(SQLServerStatementParser.ONLY, 0); }
9122 		public TerminalNode FIRST() { return getToken(SQLServerStatementParser.FIRST, 0); }
9123 		public TerminalNode NEXT() { return getToken(SQLServerStatementParser.NEXT, 0); }
9124 		public OrderByClauseContext(ParserRuleContext parent, int invokingState) {
9125 			super(parent, invokingState);
9126 		}
9127 		@Override public int getRuleIndex() { return RULE_orderByClause; }
9128 		@Override
9129 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9130 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrderByClause(this);
9131 			else return visitor.visitChildren(this);
9132 		}
9133 	}
9134 
9135 	public final OrderByClauseContext orderByClause() throws RecognitionException {
9136 		OrderByClauseContext _localctx = new OrderByClauseContext(_ctx, getState());
9137 		enterRule(_localctx, 154, RULE_orderByClause);
9138 		int _la;
9139 		try {
9140 			enterOuterAlt(_localctx, 1);
9141 			{
9142 			setState(1711);
9143 			match(ORDER);
9144 			setState(1712);
9145 			match(BY);
9146 			setState(1713);
9147 			orderByItem();
9148 			setState(1718);
9149 			_errHandler.sync(this);
9150 			_la = _input.LA(1);
9151 			while (_la==COMMA_) {
9152 				{
9153 				{
9154 				setState(1714);
9155 				match(COMMA_);
9156 				setState(1715);
9157 				orderByItem();
9158 				}
9159 				}
9160 				setState(1720);
9161 				_errHandler.sync(this);
9162 				_la = _input.LA(1);
9163 			}
9164 			setState(1732);
9165 			_errHandler.sync(this);
9166 			_la = _input.LA(1);
9167 			if (_la==OFFSET) {
9168 				{
9169 				setState(1721);
9170 				match(OFFSET);
9171 				setState(1722);
9172 				expr(0);
9173 				setState(1723);
9174 				_la = _input.LA(1);
9175 				if ( !(_la==ROW || _la==ROWS) ) {
9176 				_errHandler.recoverInline(this);
9177 				}
9178 				else {
9179 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9180 					_errHandler.reportMatch(this);
9181 					consume();
9182 				}
9183 				setState(1730);
9184 				_errHandler.sync(this);
9185 				_la = _input.LA(1);
9186 				if (_la==FETCH) {
9187 					{
9188 					setState(1724);
9189 					match(FETCH);
9190 					setState(1725);
9191 					_la = _input.LA(1);
9192 					if ( !(_la==NEXT || _la==FIRST) ) {
9193 					_errHandler.recoverInline(this);
9194 					}
9195 					else {
9196 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9197 						_errHandler.reportMatch(this);
9198 						consume();
9199 					}
9200 					setState(1726);
9201 					expr(0);
9202 					setState(1727);
9203 					_la = _input.LA(1);
9204 					if ( !(_la==ROW || _la==ROWS) ) {
9205 					_errHandler.recoverInline(this);
9206 					}
9207 					else {
9208 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9209 						_errHandler.reportMatch(this);
9210 						consume();
9211 					}
9212 					setState(1728);
9213 					match(ONLY);
9214 					}
9215 				}
9216 
9217 				}
9218 			}
9219 
9220 			}
9221 		}
9222 		catch (RecognitionException re) {
9223 			_localctx.exception = re;
9224 			_errHandler.reportError(this, re);
9225 			_errHandler.recover(this, re);
9226 		}
9227 		finally {
9228 			exitRule();
9229 		}
9230 		return _localctx;
9231 	}
9232 
9233 	public static class OrderByItemContext extends ParserRuleContext {
9234 		public ColumnNameContext columnName() {
9235 			return getRuleContext(ColumnNameContext.class,0);
9236 		}
9237 		public NumberLiteralsContext numberLiterals() {
9238 			return getRuleContext(NumberLiteralsContext.class,0);
9239 		}
9240 		public ExprContext expr() {
9241 			return getRuleContext(ExprContext.class,0);
9242 		}
9243 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
9244 		public IdentifierContext identifier() {
9245 			return getRuleContext(IdentifierContext.class,0);
9246 		}
9247 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
9248 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
9249 		public OrderByItemContext(ParserRuleContext parent, int invokingState) {
9250 			super(parent, invokingState);
9251 		}
9252 		@Override public int getRuleIndex() { return RULE_orderByItem; }
9253 		@Override
9254 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9255 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrderByItem(this);
9256 			else return visitor.visitChildren(this);
9257 		}
9258 	}
9259 
9260 	public final OrderByItemContext orderByItem() throws RecognitionException {
9261 		OrderByItemContext _localctx = new OrderByItemContext(_ctx, getState());
9262 		enterRule(_localctx, 156, RULE_orderByItem);
9263 		int _la;
9264 		try {
9265 			enterOuterAlt(_localctx, 1);
9266 			{
9267 			setState(1737);
9268 			_errHandler.sync(this);
9269 			switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) {
9270 			case 1:
9271 				{
9272 				setState(1734);
9273 				columnName();
9274 				}
9275 				break;
9276 			case 2:
9277 				{
9278 				setState(1735);
9279 				numberLiterals();
9280 				}
9281 				break;
9282 			case 3:
9283 				{
9284 				setState(1736);
9285 				expr(0);
9286 				}
9287 				break;
9288 			}
9289 			setState(1741);
9290 			_errHandler.sync(this);
9291 			_la = _input.LA(1);
9292 			if (_la==COLLATE) {
9293 				{
9294 				setState(1739);
9295 				match(COLLATE);
9296 				setState(1740);
9297 				identifier();
9298 				}
9299 			}
9300 
9301 			setState(1744);
9302 			_errHandler.sync(this);
9303 			_la = _input.LA(1);
9304 			if (_la==ASC || _la==DESC) {
9305 				{
9306 				setState(1743);
9307 				_la = _input.LA(1);
9308 				if ( !(_la==ASC || _la==DESC) ) {
9309 				_errHandler.recoverInline(this);
9310 				}
9311 				else {
9312 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9313 					_errHandler.reportMatch(this);
9314 					consume();
9315 				}
9316 				}
9317 			}
9318 
9319 			}
9320 		}
9321 		catch (RecognitionException re) {
9322 			_localctx.exception = re;
9323 			_errHandler.reportError(this, re);
9324 			_errHandler.recover(this, re);
9325 		}
9326 		finally {
9327 			exitRule();
9328 		}
9329 		return _localctx;
9330 	}
9331 
9332 	public static class DataTypeContext extends ParserRuleContext {
9333 		public DataTypeNameContext dataTypeName() {
9334 			return getRuleContext(DataTypeNameContext.class,0);
9335 		}
9336 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
9337 			return getRuleContexts(IgnoredIdentifierContext.class);
9338 		}
9339 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
9340 			return getRuleContext(IgnoredIdentifierContext.class,i);
9341 		}
9342 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
9343 		public DataTypeLengthContext dataTypeLength() {
9344 			return getRuleContext(DataTypeLengthContext.class,0);
9345 		}
9346 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
9347 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
9348 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
9349 		public TerminalNode CONTENT() { return getToken(SQLServerStatementParser.CONTENT, 0); }
9350 		public TerminalNode DOCUMENT() { return getToken(SQLServerStatementParser.DOCUMENT, 0); }
9351 		public DataTypeContext(ParserRuleContext parent, int invokingState) {
9352 			super(parent, invokingState);
9353 		}
9354 		@Override public int getRuleIndex() { return RULE_dataType; }
9355 		@Override
9356 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9357 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataType(this);
9358 			else return visitor.visitChildren(this);
9359 		}
9360 	}
9361 
9362 	public final DataTypeContext dataType() throws RecognitionException {
9363 		DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
9364 		enterRule(_localctx, 158, RULE_dataType);
9365 		int _la;
9366 		try {
9367 			enterOuterAlt(_localctx, 1);
9368 			{
9369 			setState(1749);
9370 			_errHandler.sync(this);
9371 			switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) {
9372 			case 1:
9373 				{
9374 				setState(1746);
9375 				ignoredIdentifier();
9376 				setState(1747);
9377 				match(DOT_);
9378 				}
9379 				break;
9380 			}
9381 			setState(1751);
9382 			dataTypeName();
9383 			setState(1763);
9384 			_errHandler.sync(this);
9385 			switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) {
9386 			case 1:
9387 				{
9388 				setState(1752);
9389 				dataTypeLength();
9390 				}
9391 				break;
9392 			case 2:
9393 				{
9394 				setState(1753);
9395 				match(LP_);
9396 				setState(1754);
9397 				match(MAX);
9398 				setState(1755);
9399 				match(RP_);
9400 				}
9401 				break;
9402 			case 3:
9403 				{
9404 				setState(1756);
9405 				match(LP_);
9406 				setState(1758);
9407 				_errHandler.sync(this);
9408 				_la = _input.LA(1);
9409 				if (_la==CONTENT || _la==DOCUMENT) {
9410 					{
9411 					setState(1757);
9412 					_la = _input.LA(1);
9413 					if ( !(_la==CONTENT || _la==DOCUMENT) ) {
9414 					_errHandler.recoverInline(this);
9415 					}
9416 					else {
9417 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9418 						_errHandler.reportMatch(this);
9419 						consume();
9420 					}
9421 					}
9422 				}
9423 
9424 				setState(1760);
9425 				ignoredIdentifier();
9426 				setState(1761);
9427 				match(RP_);
9428 				}
9429 				break;
9430 			}
9431 			}
9432 		}
9433 		catch (RecognitionException re) {
9434 			_localctx.exception = re;
9435 			_errHandler.reportError(this, re);
9436 			_errHandler.recover(this, re);
9437 		}
9438 		finally {
9439 			exitRule();
9440 		}
9441 		return _localctx;
9442 	}
9443 
9444 	public static class DataTypeNameContext extends ParserRuleContext {
9445 		public TerminalNode BIGINT() { return getToken(SQLServerStatementParser.BIGINT, 0); }
9446 		public TerminalNode NUMERIC() { return getToken(SQLServerStatementParser.NUMERIC, 0); }
9447 		public TerminalNode BIT() { return getToken(SQLServerStatementParser.BIT, 0); }
9448 		public TerminalNode SMALLINT() { return getToken(SQLServerStatementParser.SMALLINT, 0); }
9449 		public TerminalNode DECIMAL() { return getToken(SQLServerStatementParser.DECIMAL, 0); }
9450 		public TerminalNode SMALLMONEY() { return getToken(SQLServerStatementParser.SMALLMONEY, 0); }
9451 		public TerminalNode INT() { return getToken(SQLServerStatementParser.INT, 0); }
9452 		public TerminalNode TINYINT() { return getToken(SQLServerStatementParser.TINYINT, 0); }
9453 		public TerminalNode MONEY() { return getToken(SQLServerStatementParser.MONEY, 0); }
9454 		public TerminalNode FLOAT() { return getToken(SQLServerStatementParser.FLOAT, 0); }
9455 		public TerminalNode REAL() { return getToken(SQLServerStatementParser.REAL, 0); }
9456 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
9457 		public TerminalNode DATETIMEOFFSET() { return getToken(SQLServerStatementParser.DATETIMEOFFSET, 0); }
9458 		public TerminalNode SMALLDATETIME() { return getToken(SQLServerStatementParser.SMALLDATETIME, 0); }
9459 		public TerminalNode DATETIME() { return getToken(SQLServerStatementParser.DATETIME, 0); }
9460 		public TerminalNode DATETIME2() { return getToken(SQLServerStatementParser.DATETIME2, 0); }
9461 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
9462 		public TerminalNode CHAR() { return getToken(SQLServerStatementParser.CHAR, 0); }
9463 		public TerminalNode VARCHAR() { return getToken(SQLServerStatementParser.VARCHAR, 0); }
9464 		public TerminalNode TEXT() { return getToken(SQLServerStatementParser.TEXT, 0); }
9465 		public TerminalNode NCHAR() { return getToken(SQLServerStatementParser.NCHAR, 0); }
9466 		public TerminalNode NVARCHAR() { return getToken(SQLServerStatementParser.NVARCHAR, 0); }
9467 		public TerminalNode NTEXT() { return getToken(SQLServerStatementParser.NTEXT, 0); }
9468 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
9469 		public TerminalNode VARBINARY() { return getToken(SQLServerStatementParser.VARBINARY, 0); }
9470 		public TerminalNode IMAGE() { return getToken(SQLServerStatementParser.IMAGE, 0); }
9471 		public TerminalNode SQL_VARIANT() { return getToken(SQLServerStatementParser.SQL_VARIANT, 0); }
9472 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
9473 		public TerminalNode UNIQUEIDENTIFIER() { return getToken(SQLServerStatementParser.UNIQUEIDENTIFIER, 0); }
9474 		public TerminalNode HIERARCHYID() { return getToken(SQLServerStatementParser.HIERARCHYID, 0); }
9475 		public TerminalNode GEOMETRY() { return getToken(SQLServerStatementParser.GEOMETRY, 0); }
9476 		public TerminalNode GEOGRAPHY() { return getToken(SQLServerStatementParser.GEOGRAPHY, 0); }
9477 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
9478 		public TerminalNode INTEGER() { return getToken(SQLServerStatementParser.INTEGER, 0); }
9479 		public DataTypeNameContext(ParserRuleContext parent, int invokingState) {
9480 			super(parent, invokingState);
9481 		}
9482 		@Override public int getRuleIndex() { return RULE_dataTypeName; }
9483 		@Override
9484 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9485 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataTypeName(this);
9486 			else return visitor.visitChildren(this);
9487 		}
9488 	}
9489 
9490 	public final DataTypeNameContext dataTypeName() throws RecognitionException {
9491 		DataTypeNameContext _localctx = new DataTypeNameContext(_ctx, getState());
9492 		enterRule(_localctx, 160, RULE_dataTypeName);
9493 		int _la;
9494 		try {
9495 			enterOuterAlt(_localctx, 1);
9496 			{
9497 			setState(1765);
9498 			_la = _input.LA(1);
9499 			if ( !(((((_la - 131)) & ~0x3f) == 0 && ((1L << (_la - 131)) & ((1L << (CHAR - 131)) | (1L << (DATE - 131)) | (1L << (TIME - 131)) | (1L << (INTEGER - 131)) | (1L << (REAL - 131)) | (1L << (DECIMAL - 131)) | (1L << (BIT - 131)) | (1L << (SMALLINT - 131)) | (1L << (INT - 131)) | (1L << (TINYINT - 131)) | (1L << (NUMERIC - 131)) | (1L << (FLOAT - 131)) | (1L << (BIGINT - 131)) | (1L << (TEXT - 131)) | (1L << (VARCHAR - 131)))) != 0) || _la==BINARY || _la==XML || ((((_la - 442)) & ~0x3f) == 0 && ((1L << (_la - 442)) & ((1L << (MONEY - 442)) | (1L << (SMALLMONEY - 442)) | (1L << (DATETIMEOFFSET - 442)) | (1L << (DATETIME - 442)) | (1L << (DATETIME2 - 442)) | (1L << (SMALLDATETIME - 442)) | (1L << (NCHAR - 442)) | (1L << (NVARCHAR - 442)) | (1L << (NTEXT - 442)) | (1L << (VARBINARY - 442)) | (1L << (IMAGE - 442)) | (1L << (SQL_VARIANT - 442)) | (1L << (UNIQUEIDENTIFIER - 442)) | (1L << (HIERARCHYID - 442)) | (1L << (GEOMETRY - 442)) | (1L << (GEOGRAPHY - 442)))) != 0) || _la==IDENTIFIER_) ) {
9500 			_errHandler.recoverInline(this);
9501 			}
9502 			else {
9503 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9504 				_errHandler.reportMatch(this);
9505 				consume();
9506 			}
9507 			}
9508 		}
9509 		catch (RecognitionException re) {
9510 			_localctx.exception = re;
9511 			_errHandler.reportError(this, re);
9512 			_errHandler.recover(this, re);
9513 		}
9514 		finally {
9515 			exitRule();
9516 		}
9517 		return _localctx;
9518 	}
9519 
9520 	public static class AtTimeZoneExprContext extends ParserRuleContext {
9521 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
9522 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
9523 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
9524 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
9525 		public TerminalNode ZONE() { return getToken(SQLServerStatementParser.ZONE, 0); }
9526 		public AtTimeZoneExprContext(ParserRuleContext parent, int invokingState) {
9527 			super(parent, invokingState);
9528 		}
9529 		@Override public int getRuleIndex() { return RULE_atTimeZoneExpr; }
9530 		@Override
9531 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9532 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAtTimeZoneExpr(this);
9533 			else return visitor.visitChildren(this);
9534 		}
9535 	}
9536 
9537 	public final AtTimeZoneExprContext atTimeZoneExpr() throws RecognitionException {
9538 		AtTimeZoneExprContext _localctx = new AtTimeZoneExprContext(_ctx, getState());
9539 		enterRule(_localctx, 162, RULE_atTimeZoneExpr);
9540 		int _la;
9541 		try {
9542 			enterOuterAlt(_localctx, 1);
9543 			{
9544 			setState(1767);
9545 			match(IDENTIFIER_);
9546 			setState(1771);
9547 			_errHandler.sync(this);
9548 			_la = _input.LA(1);
9549 			if (_la==WITH) {
9550 				{
9551 				setState(1768);
9552 				match(WITH);
9553 				setState(1769);
9554 				match(TIME);
9555 				setState(1770);
9556 				match(ZONE);
9557 				}
9558 			}
9559 
9560 			setState(1773);
9561 			match(STRING_);
9562 			}
9563 		}
9564 		catch (RecognitionException re) {
9565 			_localctx.exception = re;
9566 			_errHandler.reportError(this, re);
9567 			_errHandler.recover(this, re);
9568 		}
9569 		finally {
9570 			exitRule();
9571 		}
9572 		return _localctx;
9573 	}
9574 
9575 	public static class CastExprContext extends ParserRuleContext {
9576 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
9577 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
9578 		public TerminalNode LP_(int i) {
9579 			return getToken(SQLServerStatementParser.LP_, i);
9580 		}
9581 		public ExprContext expr() {
9582 			return getRuleContext(ExprContext.class,0);
9583 		}
9584 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
9585 		public DataTypeContext dataType() {
9586 			return getRuleContext(DataTypeContext.class,0);
9587 		}
9588 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
9589 		public TerminalNode RP_(int i) {
9590 			return getToken(SQLServerStatementParser.RP_, i);
9591 		}
9592 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
9593 		public CastExprContext(ParserRuleContext parent, int invokingState) {
9594 			super(parent, invokingState);
9595 		}
9596 		@Override public int getRuleIndex() { return RULE_castExpr; }
9597 		@Override
9598 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9599 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCastExpr(this);
9600 			else return visitor.visitChildren(this);
9601 		}
9602 	}
9603 
9604 	public final CastExprContext castExpr() throws RecognitionException {
9605 		CastExprContext _localctx = new CastExprContext(_ctx, getState());
9606 		enterRule(_localctx, 164, RULE_castExpr);
9607 		int _la;
9608 		try {
9609 			enterOuterAlt(_localctx, 1);
9610 			{
9611 			setState(1775);
9612 			match(CAST);
9613 			setState(1776);
9614 			match(LP_);
9615 			setState(1777);
9616 			expr(0);
9617 			setState(1778);
9618 			match(AS);
9619 			setState(1779);
9620 			dataType();
9621 			setState(1783);
9622 			_errHandler.sync(this);
9623 			_la = _input.LA(1);
9624 			if (_la==LP_) {
9625 				{
9626 				setState(1780);
9627 				match(LP_);
9628 				setState(1781);
9629 				match(NUMBER_);
9630 				setState(1782);
9631 				match(RP_);
9632 				}
9633 			}
9634 
9635 			setState(1785);
9636 			match(RP_);
9637 			}
9638 		}
9639 		catch (RecognitionException re) {
9640 			_localctx.exception = re;
9641 			_errHandler.reportError(this, re);
9642 			_errHandler.recover(this, re);
9643 		}
9644 		finally {
9645 			exitRule();
9646 		}
9647 		return _localctx;
9648 	}
9649 
9650 	public static class ConvertExprContext extends ParserRuleContext {
9651 		public TerminalNode CONVERT() { return getToken(SQLServerStatementParser.CONVERT, 0); }
9652 		public DataTypeContext dataType() {
9653 			return getRuleContext(DataTypeContext.class,0);
9654 		}
9655 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
9656 		public TerminalNode COMMA_(int i) {
9657 			return getToken(SQLServerStatementParser.COMMA_, i);
9658 		}
9659 		public ExprContext expr() {
9660 			return getRuleContext(ExprContext.class,0);
9661 		}
9662 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
9663 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
9664 		public TerminalNode NUMBER_(int i) {
9665 			return getToken(SQLServerStatementParser.NUMBER_, i);
9666 		}
9667 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
9668 		public ConvertExprContext(ParserRuleContext parent, int invokingState) {
9669 			super(parent, invokingState);
9670 		}
9671 		@Override public int getRuleIndex() { return RULE_convertExpr; }
9672 		@Override
9673 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9674 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConvertExpr(this);
9675 			else return visitor.visitChildren(this);
9676 		}
9677 	}
9678 
9679 	public final ConvertExprContext convertExpr() throws RecognitionException {
9680 		ConvertExprContext _localctx = new ConvertExprContext(_ctx, getState());
9681 		enterRule(_localctx, 166, RULE_convertExpr);
9682 		int _la;
9683 		try {
9684 			enterOuterAlt(_localctx, 1);
9685 			{
9686 			setState(1787);
9687 			match(CONVERT);
9688 			{
9689 			setState(1788);
9690 			dataType();
9691 			setState(1792);
9692 			_errHandler.sync(this);
9693 			_la = _input.LA(1);
9694 			if (_la==LP_) {
9695 				{
9696 				setState(1789);
9697 				match(LP_);
9698 				setState(1790);
9699 				match(NUMBER_);
9700 				setState(1791);
9701 				match(RP_);
9702 				}
9703 			}
9704 
9705 			setState(1794);
9706 			match(COMMA_);
9707 			setState(1795);
9708 			expr(0);
9709 			setState(1798);
9710 			_errHandler.sync(this);
9711 			switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) {
9712 			case 1:
9713 				{
9714 				setState(1796);
9715 				match(COMMA_);
9716 				setState(1797);
9717 				match(NUMBER_);
9718 				}
9719 				break;
9720 			}
9721 			}
9722 			}
9723 		}
9724 		catch (RecognitionException re) {
9725 			_localctx.exception = re;
9726 			_errHandler.reportError(this, re);
9727 			_errHandler.recover(this, re);
9728 		}
9729 		finally {
9730 			exitRule();
9731 		}
9732 		return _localctx;
9733 	}
9734 
9735 	public static class WindowedFunctionContext extends ParserRuleContext {
9736 		public FunctionCallContext functionCall() {
9737 			return getRuleContext(FunctionCallContext.class,0);
9738 		}
9739 		public OverClauseContext overClause() {
9740 			return getRuleContext(OverClauseContext.class,0);
9741 		}
9742 		public WindowedFunctionContext(ParserRuleContext parent, int invokingState) {
9743 			super(parent, invokingState);
9744 		}
9745 		@Override public int getRuleIndex() { return RULE_windowedFunction; }
9746 		@Override
9747 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9748 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowedFunction(this);
9749 			else return visitor.visitChildren(this);
9750 		}
9751 	}
9752 
9753 	public final WindowedFunctionContext windowedFunction() throws RecognitionException {
9754 		WindowedFunctionContext _localctx = new WindowedFunctionContext(_ctx, getState());
9755 		enterRule(_localctx, 168, RULE_windowedFunction);
9756 		try {
9757 			enterOuterAlt(_localctx, 1);
9758 			{
9759 			setState(1800);
9760 			functionCall();
9761 			setState(1801);
9762 			overClause();
9763 			}
9764 		}
9765 		catch (RecognitionException re) {
9766 			_localctx.exception = re;
9767 			_errHandler.reportError(this, re);
9768 			_errHandler.recover(this, re);
9769 		}
9770 		finally {
9771 			exitRule();
9772 		}
9773 		return _localctx;
9774 	}
9775 
9776 	public static class OverClauseContext extends ParserRuleContext {
9777 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
9778 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
9779 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
9780 		public PartitionByClauseContext partitionByClause() {
9781 			return getRuleContext(PartitionByClauseContext.class,0);
9782 		}
9783 		public OrderByClauseContext orderByClause() {
9784 			return getRuleContext(OrderByClauseContext.class,0);
9785 		}
9786 		public RowRangeClauseContext rowRangeClause() {
9787 			return getRuleContext(RowRangeClauseContext.class,0);
9788 		}
9789 		public OverClauseContext(ParserRuleContext parent, int invokingState) {
9790 			super(parent, invokingState);
9791 		}
9792 		@Override public int getRuleIndex() { return RULE_overClause; }
9793 		@Override
9794 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9795 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOverClause(this);
9796 			else return visitor.visitChildren(this);
9797 		}
9798 	}
9799 
9800 	public final OverClauseContext overClause() throws RecognitionException {
9801 		OverClauseContext _localctx = new OverClauseContext(_ctx, getState());
9802 		enterRule(_localctx, 170, RULE_overClause);
9803 		int _la;
9804 		try {
9805 			enterOuterAlt(_localctx, 1);
9806 			{
9807 			setState(1803);
9808 			match(OVER);
9809 			setState(1804);
9810 			match(LP_);
9811 			setState(1806);
9812 			_errHandler.sync(this);
9813 			_la = _input.LA(1);
9814 			if (_la==PARTITION) {
9815 				{
9816 				setState(1805);
9817 				partitionByClause();
9818 				}
9819 			}
9820 
9821 			setState(1809);
9822 			_errHandler.sync(this);
9823 			_la = _input.LA(1);
9824 			if (_la==ORDER) {
9825 				{
9826 				setState(1808);
9827 				orderByClause();
9828 				}
9829 			}
9830 
9831 			setState(1812);
9832 			_errHandler.sync(this);
9833 			_la = _input.LA(1);
9834 			if (_la==ROWS || _la==RANGE) {
9835 				{
9836 				setState(1811);
9837 				rowRangeClause();
9838 				}
9839 			}
9840 
9841 			setState(1814);
9842 			match(RP_);
9843 			}
9844 		}
9845 		catch (RecognitionException re) {
9846 			_localctx.exception = re;
9847 			_errHandler.reportError(this, re);
9848 			_errHandler.recover(this, re);
9849 		}
9850 		finally {
9851 			exitRule();
9852 		}
9853 		return _localctx;
9854 	}
9855 
9856 	public static class PartitionByClauseContext extends ParserRuleContext {
9857 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
9858 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
9859 		public List<ExprContext> expr() {
9860 			return getRuleContexts(ExprContext.class);
9861 		}
9862 		public ExprContext expr(int i) {
9863 			return getRuleContext(ExprContext.class,i);
9864 		}
9865 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
9866 		public TerminalNode COMMA_(int i) {
9867 			return getToken(SQLServerStatementParser.COMMA_, i);
9868 		}
9869 		public PartitionByClauseContext(ParserRuleContext parent, int invokingState) {
9870 			super(parent, invokingState);
9871 		}
9872 		@Override public int getRuleIndex() { return RULE_partitionByClause; }
9873 		@Override
9874 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9875 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionByClause(this);
9876 			else return visitor.visitChildren(this);
9877 		}
9878 	}
9879 
9880 	public final PartitionByClauseContext partitionByClause() throws RecognitionException {
9881 		PartitionByClauseContext _localctx = new PartitionByClauseContext(_ctx, getState());
9882 		enterRule(_localctx, 172, RULE_partitionByClause);
9883 		int _la;
9884 		try {
9885 			enterOuterAlt(_localctx, 1);
9886 			{
9887 			setState(1816);
9888 			match(PARTITION);
9889 			setState(1817);
9890 			match(BY);
9891 			setState(1818);
9892 			expr(0);
9893 			setState(1823);
9894 			_errHandler.sync(this);
9895 			_la = _input.LA(1);
9896 			while (_la==COMMA_) {
9897 				{
9898 				{
9899 				setState(1819);
9900 				match(COMMA_);
9901 				setState(1820);
9902 				expr(0);
9903 				}
9904 				}
9905 				setState(1825);
9906 				_errHandler.sync(this);
9907 				_la = _input.LA(1);
9908 			}
9909 			}
9910 		}
9911 		catch (RecognitionException re) {
9912 			_localctx.exception = re;
9913 			_errHandler.reportError(this, re);
9914 			_errHandler.recover(this, re);
9915 		}
9916 		finally {
9917 			exitRule();
9918 		}
9919 		return _localctx;
9920 	}
9921 
9922 	public static class RowRangeClauseContext extends ParserRuleContext {
9923 		public WindowFrameExtentContext windowFrameExtent() {
9924 			return getRuleContext(WindowFrameExtentContext.class,0);
9925 		}
9926 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
9927 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
9928 		public RowRangeClauseContext(ParserRuleContext parent, int invokingState) {
9929 			super(parent, invokingState);
9930 		}
9931 		@Override public int getRuleIndex() { return RULE_rowRangeClause; }
9932 		@Override
9933 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9934 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRowRangeClause(this);
9935 			else return visitor.visitChildren(this);
9936 		}
9937 	}
9938 
9939 	public final RowRangeClauseContext rowRangeClause() throws RecognitionException {
9940 		RowRangeClauseContext _localctx = new RowRangeClauseContext(_ctx, getState());
9941 		enterRule(_localctx, 174, RULE_rowRangeClause);
9942 		int _la;
9943 		try {
9944 			enterOuterAlt(_localctx, 1);
9945 			{
9946 			setState(1826);
9947 			_la = _input.LA(1);
9948 			if ( !(_la==ROWS || _la==RANGE) ) {
9949 			_errHandler.recoverInline(this);
9950 			}
9951 			else {
9952 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9953 				_errHandler.reportMatch(this);
9954 				consume();
9955 			}
9956 			setState(1827);
9957 			windowFrameExtent();
9958 			}
9959 		}
9960 		catch (RecognitionException re) {
9961 			_localctx.exception = re;
9962 			_errHandler.reportError(this, re);
9963 			_errHandler.recover(this, re);
9964 		}
9965 		finally {
9966 			exitRule();
9967 		}
9968 		return _localctx;
9969 	}
9970 
9971 	public static class WindowFrameExtentContext extends ParserRuleContext {
9972 		public WindowFramePrecedingContext windowFramePreceding() {
9973 			return getRuleContext(WindowFramePrecedingContext.class,0);
9974 		}
9975 		public WindowFrameBetweenContext windowFrameBetween() {
9976 			return getRuleContext(WindowFrameBetweenContext.class,0);
9977 		}
9978 		public WindowFrameExtentContext(ParserRuleContext parent, int invokingState) {
9979 			super(parent, invokingState);
9980 		}
9981 		@Override public int getRuleIndex() { return RULE_windowFrameExtent; }
9982 		@Override
9983 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9984 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameExtent(this);
9985 			else return visitor.visitChildren(this);
9986 		}
9987 	}
9988 
9989 	public final WindowFrameExtentContext windowFrameExtent() throws RecognitionException {
9990 		WindowFrameExtentContext _localctx = new WindowFrameExtentContext(_ctx, getState());
9991 		enterRule(_localctx, 176, RULE_windowFrameExtent);
9992 		try {
9993 			setState(1831);
9994 			_errHandler.sync(this);
9995 			switch (_input.LA(1)) {
9996 			case CURRENT:
9997 			case UNBOUNDED:
9998 			case NUMBER_:
9999 				enterOuterAlt(_localctx, 1);
10000 				{
10001 				setState(1829);
10002 				windowFramePreceding();
10003 				}
10004 				break;
10005 			case BETWEEN:
10006 				enterOuterAlt(_localctx, 2);
10007 				{
10008 				setState(1830);
10009 				windowFrameBetween();
10010 				}
10011 				break;
10012 			default:
10013 				throw new NoViableAltException(this);
10014 			}
10015 		}
10016 		catch (RecognitionException re) {
10017 			_localctx.exception = re;
10018 			_errHandler.reportError(this, re);
10019 			_errHandler.recover(this, re);
10020 		}
10021 		finally {
10022 			exitRule();
10023 		}
10024 		return _localctx;
10025 	}
10026 
10027 	public static class WindowFrameBetweenContext extends ParserRuleContext {
10028 		public TerminalNode BETWEEN() { return getToken(SQLServerStatementParser.BETWEEN, 0); }
10029 		public List<WindowFrameBoundContext> windowFrameBound() {
10030 			return getRuleContexts(WindowFrameBoundContext.class);
10031 		}
10032 		public WindowFrameBoundContext windowFrameBound(int i) {
10033 			return getRuleContext(WindowFrameBoundContext.class,i);
10034 		}
10035 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
10036 		public WindowFrameBetweenContext(ParserRuleContext parent, int invokingState) {
10037 			super(parent, invokingState);
10038 		}
10039 		@Override public int getRuleIndex() { return RULE_windowFrameBetween; }
10040 		@Override
10041 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10042 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameBetween(this);
10043 			else return visitor.visitChildren(this);
10044 		}
10045 	}
10046 
10047 	public final WindowFrameBetweenContext windowFrameBetween() throws RecognitionException {
10048 		WindowFrameBetweenContext _localctx = new WindowFrameBetweenContext(_ctx, getState());
10049 		enterRule(_localctx, 178, RULE_windowFrameBetween);
10050 		try {
10051 			enterOuterAlt(_localctx, 1);
10052 			{
10053 			setState(1833);
10054 			match(BETWEEN);
10055 			setState(1834);
10056 			windowFrameBound();
10057 			setState(1835);
10058 			match(AND);
10059 			setState(1836);
10060 			windowFrameBound();
10061 			}
10062 		}
10063 		catch (RecognitionException re) {
10064 			_localctx.exception = re;
10065 			_errHandler.reportError(this, re);
10066 			_errHandler.recover(this, re);
10067 		}
10068 		finally {
10069 			exitRule();
10070 		}
10071 		return _localctx;
10072 	}
10073 
10074 	public static class WindowFrameBoundContext extends ParserRuleContext {
10075 		public WindowFramePrecedingContext windowFramePreceding() {
10076 			return getRuleContext(WindowFramePrecedingContext.class,0);
10077 		}
10078 		public WindowFrameFollowingContext windowFrameFollowing() {
10079 			return getRuleContext(WindowFrameFollowingContext.class,0);
10080 		}
10081 		public WindowFrameBoundContext(ParserRuleContext parent, int invokingState) {
10082 			super(parent, invokingState);
10083 		}
10084 		@Override public int getRuleIndex() { return RULE_windowFrameBound; }
10085 		@Override
10086 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10087 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameBound(this);
10088 			else return visitor.visitChildren(this);
10089 		}
10090 	}
10091 
10092 	public final WindowFrameBoundContext windowFrameBound() throws RecognitionException {
10093 		WindowFrameBoundContext _localctx = new WindowFrameBoundContext(_ctx, getState());
10094 		enterRule(_localctx, 180, RULE_windowFrameBound);
10095 		try {
10096 			setState(1840);
10097 			_errHandler.sync(this);
10098 			switch ( getInterpreter().adaptivePredict(_input,105,_ctx) ) {
10099 			case 1:
10100 				enterOuterAlt(_localctx, 1);
10101 				{
10102 				setState(1838);
10103 				windowFramePreceding();
10104 				}
10105 				break;
10106 			case 2:
10107 				enterOuterAlt(_localctx, 2);
10108 				{
10109 				setState(1839);
10110 				windowFrameFollowing();
10111 				}
10112 				break;
10113 			}
10114 		}
10115 		catch (RecognitionException re) {
10116 			_localctx.exception = re;
10117 			_errHandler.reportError(this, re);
10118 			_errHandler.recover(this, re);
10119 		}
10120 		finally {
10121 			exitRule();
10122 		}
10123 		return _localctx;
10124 	}
10125 
10126 	public static class WindowFramePrecedingContext extends ParserRuleContext {
10127 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
10128 		public TerminalNode PRECEDING() { return getToken(SQLServerStatementParser.PRECEDING, 0); }
10129 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10130 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
10131 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
10132 		public WindowFramePrecedingContext(ParserRuleContext parent, int invokingState) {
10133 			super(parent, invokingState);
10134 		}
10135 		@Override public int getRuleIndex() { return RULE_windowFramePreceding; }
10136 		@Override
10137 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10138 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFramePreceding(this);
10139 			else return visitor.visitChildren(this);
10140 		}
10141 	}
10142 
10143 	public final WindowFramePrecedingContext windowFramePreceding() throws RecognitionException {
10144 		WindowFramePrecedingContext _localctx = new WindowFramePrecedingContext(_ctx, getState());
10145 		enterRule(_localctx, 182, RULE_windowFramePreceding);
10146 		try {
10147 			setState(1848);
10148 			_errHandler.sync(this);
10149 			switch (_input.LA(1)) {
10150 			case UNBOUNDED:
10151 				enterOuterAlt(_localctx, 1);
10152 				{
10153 				setState(1842);
10154 				match(UNBOUNDED);
10155 				setState(1843);
10156 				match(PRECEDING);
10157 				}
10158 				break;
10159 			case NUMBER_:
10160 				enterOuterAlt(_localctx, 2);
10161 				{
10162 				setState(1844);
10163 				match(NUMBER_);
10164 				setState(1845);
10165 				match(PRECEDING);
10166 				}
10167 				break;
10168 			case CURRENT:
10169 				enterOuterAlt(_localctx, 3);
10170 				{
10171 				setState(1846);
10172 				match(CURRENT);
10173 				setState(1847);
10174 				match(ROW);
10175 				}
10176 				break;
10177 			default:
10178 				throw new NoViableAltException(this);
10179 			}
10180 		}
10181 		catch (RecognitionException re) {
10182 			_localctx.exception = re;
10183 			_errHandler.reportError(this, re);
10184 			_errHandler.recover(this, re);
10185 		}
10186 		finally {
10187 			exitRule();
10188 		}
10189 		return _localctx;
10190 	}
10191 
10192 	public static class WindowFrameFollowingContext extends ParserRuleContext {
10193 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
10194 		public TerminalNode FOLLOWING() { return getToken(SQLServerStatementParser.FOLLOWING, 0); }
10195 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10196 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
10197 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
10198 		public WindowFrameFollowingContext(ParserRuleContext parent, int invokingState) {
10199 			super(parent, invokingState);
10200 		}
10201 		@Override public int getRuleIndex() { return RULE_windowFrameFollowing; }
10202 		@Override
10203 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10204 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameFollowing(this);
10205 			else return visitor.visitChildren(this);
10206 		}
10207 	}
10208 
10209 	public final WindowFrameFollowingContext windowFrameFollowing() throws RecognitionException {
10210 		WindowFrameFollowingContext _localctx = new WindowFrameFollowingContext(_ctx, getState());
10211 		enterRule(_localctx, 184, RULE_windowFrameFollowing);
10212 		try {
10213 			setState(1856);
10214 			_errHandler.sync(this);
10215 			switch (_input.LA(1)) {
10216 			case UNBOUNDED:
10217 				enterOuterAlt(_localctx, 1);
10218 				{
10219 				setState(1850);
10220 				match(UNBOUNDED);
10221 				setState(1851);
10222 				match(FOLLOWING);
10223 				}
10224 				break;
10225 			case NUMBER_:
10226 				enterOuterAlt(_localctx, 2);
10227 				{
10228 				setState(1852);
10229 				match(NUMBER_);
10230 				setState(1853);
10231 				match(FOLLOWING);
10232 				}
10233 				break;
10234 			case CURRENT:
10235 				enterOuterAlt(_localctx, 3);
10236 				{
10237 				setState(1854);
10238 				match(CURRENT);
10239 				setState(1855);
10240 				match(ROW);
10241 				}
10242 				break;
10243 			default:
10244 				throw new NoViableAltException(this);
10245 			}
10246 		}
10247 		catch (RecognitionException re) {
10248 			_localctx.exception = re;
10249 			_errHandler.reportError(this, re);
10250 			_errHandler.recover(this, re);
10251 		}
10252 		finally {
10253 			exitRule();
10254 		}
10255 		return _localctx;
10256 	}
10257 
10258 	public static class ColumnNameWithSortContext extends ParserRuleContext {
10259 		public ColumnNameContext columnName() {
10260 			return getRuleContext(ColumnNameContext.class,0);
10261 		}
10262 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
10263 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
10264 		public ColumnNameWithSortContext(ParserRuleContext parent, int invokingState) {
10265 			super(parent, invokingState);
10266 		}
10267 		@Override public int getRuleIndex() { return RULE_columnNameWithSort; }
10268 		@Override
10269 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10270 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNameWithSort(this);
10271 			else return visitor.visitChildren(this);
10272 		}
10273 	}
10274 
10275 	public final ColumnNameWithSortContext columnNameWithSort() throws RecognitionException {
10276 		ColumnNameWithSortContext _localctx = new ColumnNameWithSortContext(_ctx, getState());
10277 		enterRule(_localctx, 186, RULE_columnNameWithSort);
10278 		int _la;
10279 		try {
10280 			enterOuterAlt(_localctx, 1);
10281 			{
10282 			setState(1858);
10283 			columnName();
10284 			setState(1860);
10285 			_errHandler.sync(this);
10286 			_la = _input.LA(1);
10287 			if (_la==ASC || _la==DESC) {
10288 				{
10289 				setState(1859);
10290 				_la = _input.LA(1);
10291 				if ( !(_la==ASC || _la==DESC) ) {
10292 				_errHandler.recoverInline(this);
10293 				}
10294 				else {
10295 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10296 					_errHandler.reportMatch(this);
10297 					consume();
10298 				}
10299 				}
10300 			}
10301 
10302 			}
10303 		}
10304 		catch (RecognitionException re) {
10305 			_localctx.exception = re;
10306 			_errHandler.reportError(this, re);
10307 			_errHandler.recover(this, re);
10308 		}
10309 		finally {
10310 			exitRule();
10311 		}
10312 		return _localctx;
10313 	}
10314 
10315 	public static class IndexOptionContext extends ParserRuleContext {
10316 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
10317 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
10318 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10319 		public EqOnOffOptionContext eqOnOffOption() {
10320 			return getRuleContext(EqOnOffOptionContext.class,0);
10321 		}
10322 		public EqTimeContext eqTime() {
10323 			return getRuleContext(EqTimeContext.class,0);
10324 		}
10325 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
10326 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
10327 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
10328 		public CompressionOptionContext compressionOption() {
10329 			return getRuleContext(CompressionOptionContext.class,0);
10330 		}
10331 		public OnPartitionClauseContext onPartitionClause() {
10332 			return getRuleContext(OnPartitionClauseContext.class,0);
10333 		}
10334 		public IndexOptionContext(ParserRuleContext parent, int invokingState) {
10335 			super(parent, invokingState);
10336 		}
10337 		@Override public int getRuleIndex() { return RULE_indexOption; }
10338 		@Override
10339 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10340 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOption(this);
10341 			else return visitor.visitChildren(this);
10342 		}
10343 	}
10344 
10345 	public final IndexOptionContext indexOption() throws RecognitionException {
10346 		IndexOptionContext _localctx = new IndexOptionContext(_ctx, getState());
10347 		enterRule(_localctx, 188, RULE_indexOption);
10348 		int _la;
10349 		try {
10350 			setState(1875);
10351 			_errHandler.sync(this);
10352 			switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) {
10353 			case 1:
10354 				enterOuterAlt(_localctx, 1);
10355 				{
10356 				setState(1862);
10357 				match(FILLFACTOR);
10358 				setState(1863);
10359 				match(EQ_);
10360 				setState(1864);
10361 				match(NUMBER_);
10362 				}
10363 				break;
10364 			case 2:
10365 				enterOuterAlt(_localctx, 2);
10366 				{
10367 				setState(1865);
10368 				eqOnOffOption();
10369 				}
10370 				break;
10371 			case 3:
10372 				enterOuterAlt(_localctx, 3);
10373 				{
10374 				setState(1866);
10375 				_la = _input.LA(1);
10376 				if ( !(_la==COMPRESSION_DELAY || _la==MAX_DURATION) ) {
10377 				_errHandler.recoverInline(this);
10378 				}
10379 				else {
10380 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10381 					_errHandler.reportMatch(this);
10382 					consume();
10383 				}
10384 				setState(1867);
10385 				eqTime();
10386 				}
10387 				break;
10388 			case 4:
10389 				enterOuterAlt(_localctx, 4);
10390 				{
10391 				setState(1868);
10392 				match(MAXDOP);
10393 				setState(1869);
10394 				match(EQ_);
10395 				setState(1870);
10396 				match(NUMBER_);
10397 				}
10398 				break;
10399 			case 5:
10400 				enterOuterAlt(_localctx, 5);
10401 				{
10402 				setState(1871);
10403 				compressionOption();
10404 				setState(1873);
10405 				_errHandler.sync(this);
10406 				_la = _input.LA(1);
10407 				if (_la==ON) {
10408 					{
10409 					setState(1872);
10410 					onPartitionClause();
10411 					}
10412 				}
10413 
10414 				}
10415 				break;
10416 			}
10417 		}
10418 		catch (RecognitionException re) {
10419 			_localctx.exception = re;
10420 			_errHandler.reportError(this, re);
10421 			_errHandler.recover(this, re);
10422 		}
10423 		finally {
10424 			exitRule();
10425 		}
10426 		return _localctx;
10427 	}
10428 
10429 	public static class CompressionOptionContext extends ParserRuleContext {
10430 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
10431 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
10432 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
10433 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
10434 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
10435 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
10436 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
10437 		public CompressionOptionContext(ParserRuleContext parent, int invokingState) {
10438 			super(parent, invokingState);
10439 		}
10440 		@Override public int getRuleIndex() { return RULE_compressionOption; }
10441 		@Override
10442 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10443 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompressionOption(this);
10444 			else return visitor.visitChildren(this);
10445 		}
10446 	}
10447 
10448 	public final CompressionOptionContext compressionOption() throws RecognitionException {
10449 		CompressionOptionContext _localctx = new CompressionOptionContext(_ctx, getState());
10450 		enterRule(_localctx, 190, RULE_compressionOption);
10451 		int _la;
10452 		try {
10453 			enterOuterAlt(_localctx, 1);
10454 			{
10455 			setState(1877);
10456 			match(DATA_COMPRESSION);
10457 			setState(1878);
10458 			match(EQ_);
10459 			setState(1879);
10460 			_la = _input.LA(1);
10461 			if ( !(((((_la - 241)) & ~0x3f) == 0 && ((1L << (_la - 241)) & ((1L << (ROW - 241)) | (1L << (COLUMNSTORE - 241)) | (1L << (NONE - 241)) | (1L << (PAGE - 241)))) != 0) || _la==COLUMNSTORE_ARCHIVE) ) {
10462 			_errHandler.recoverInline(this);
10463 			}
10464 			else {
10465 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10466 				_errHandler.reportMatch(this);
10467 				consume();
10468 			}
10469 			}
10470 		}
10471 		catch (RecognitionException re) {
10472 			_localctx.exception = re;
10473 			_errHandler.reportError(this, re);
10474 			_errHandler.recover(this, re);
10475 		}
10476 		finally {
10477 			exitRule();
10478 		}
10479 		return _localctx;
10480 	}
10481 
10482 	public static class EqTimeContext extends ParserRuleContext {
10483 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
10484 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10485 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
10486 		public EqTimeContext(ParserRuleContext parent, int invokingState) {
10487 			super(parent, invokingState);
10488 		}
10489 		@Override public int getRuleIndex() { return RULE_eqTime; }
10490 		@Override
10491 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10492 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqTime(this);
10493 			else return visitor.visitChildren(this);
10494 		}
10495 	}
10496 
10497 	public final EqTimeContext eqTime() throws RecognitionException {
10498 		EqTimeContext _localctx = new EqTimeContext(_ctx, getState());
10499 		enterRule(_localctx, 192, RULE_eqTime);
10500 		int _la;
10501 		try {
10502 			enterOuterAlt(_localctx, 1);
10503 			{
10504 			setState(1881);
10505 			match(EQ_);
10506 			setState(1882);
10507 			match(NUMBER_);
10508 			setState(1884);
10509 			_errHandler.sync(this);
10510 			_la = _input.LA(1);
10511 			if (_la==MINUTES) {
10512 				{
10513 				setState(1883);
10514 				match(MINUTES);
10515 				}
10516 			}
10517 
10518 			}
10519 		}
10520 		catch (RecognitionException re) {
10521 			_localctx.exception = re;
10522 			_errHandler.reportError(this, re);
10523 			_errHandler.recover(this, re);
10524 		}
10525 		finally {
10526 			exitRule();
10527 		}
10528 		return _localctx;
10529 	}
10530 
10531 	public static class EqOnOffOptionContext extends ParserRuleContext {
10532 		public EqKeyContext eqKey() {
10533 			return getRuleContext(EqKeyContext.class,0);
10534 		}
10535 		public EqOnOffContext eqOnOff() {
10536 			return getRuleContext(EqOnOffContext.class,0);
10537 		}
10538 		public EqOnOffOptionContext(ParserRuleContext parent, int invokingState) {
10539 			super(parent, invokingState);
10540 		}
10541 		@Override public int getRuleIndex() { return RULE_eqOnOffOption; }
10542 		@Override
10543 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10544 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqOnOffOption(this);
10545 			else return visitor.visitChildren(this);
10546 		}
10547 	}
10548 
10549 	public final EqOnOffOptionContext eqOnOffOption() throws RecognitionException {
10550 		EqOnOffOptionContext _localctx = new EqOnOffOptionContext(_ctx, getState());
10551 		enterRule(_localctx, 194, RULE_eqOnOffOption);
10552 		try {
10553 			enterOuterAlt(_localctx, 1);
10554 			{
10555 			setState(1886);
10556 			eqKey();
10557 			setState(1887);
10558 			eqOnOff();
10559 			}
10560 		}
10561 		catch (RecognitionException re) {
10562 			_localctx.exception = re;
10563 			_errHandler.reportError(this, re);
10564 			_errHandler.recover(this, re);
10565 		}
10566 		finally {
10567 			exitRule();
10568 		}
10569 		return _localctx;
10570 	}
10571 
10572 	public static class EqKeyContext extends ParserRuleContext {
10573 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
10574 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
10575 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
10576 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
10577 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
10578 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
10579 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
10580 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
10581 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
10582 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
10583 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
10584 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
10585 		public EqKeyContext(ParserRuleContext parent, int invokingState) {
10586 			super(parent, invokingState);
10587 		}
10588 		@Override public int getRuleIndex() { return RULE_eqKey; }
10589 		@Override
10590 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10591 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqKey(this);
10592 			else return visitor.visitChildren(this);
10593 		}
10594 	}
10595 
10596 	public final EqKeyContext eqKey() throws RecognitionException {
10597 		EqKeyContext _localctx = new EqKeyContext(_ctx, getState());
10598 		enterRule(_localctx, 196, RULE_eqKey);
10599 		int _la;
10600 		try {
10601 			enterOuterAlt(_localctx, 1);
10602 			{
10603 			setState(1889);
10604 			_la = _input.LA(1);
10605 			if ( !(_la==ONLINE || _la==RESUMABLE || ((((_la - 398)) & ~0x3f) == 0 && ((1L << (_la - 398)) & ((1L << (ALLOW_PAGE_LOCKS - 398)) | (1L << (ALLOW_ROW_LOCKS - 398)) | (1L << (COMPRESSION_DELAY - 398)) | (1L << (STATISTICS_INCREMENTAL - 398)) | (1L << (STATISTICS_NORECOMPUTE - 398)) | (1L << (SORT_IN_TEMPDB - 398)) | (1L << (IGNORE_DUP_KEY - 398)) | (1L << (PAD_INDEX - 398)) | (1L << (DROP_EXISTING - 398)))) != 0) || _la==OPTIMIZE_FOR_SEQUENTIAL_KEY) ) {
10606 			_errHandler.recoverInline(this);
10607 			}
10608 			else {
10609 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10610 				_errHandler.reportMatch(this);
10611 				consume();
10612 			}
10613 			}
10614 		}
10615 		catch (RecognitionException re) {
10616 			_localctx.exception = re;
10617 			_errHandler.reportError(this, re);
10618 			_errHandler.recover(this, re);
10619 		}
10620 		finally {
10621 			exitRule();
10622 		}
10623 		return _localctx;
10624 	}
10625 
10626 	public static class EqOnOffContext extends ParserRuleContext {
10627 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
10628 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
10629 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
10630 		public EqOnOffContext(ParserRuleContext parent, int invokingState) {
10631 			super(parent, invokingState);
10632 		}
10633 		@Override public int getRuleIndex() { return RULE_eqOnOff; }
10634 		@Override
10635 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10636 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqOnOff(this);
10637 			else return visitor.visitChildren(this);
10638 		}
10639 	}
10640 
10641 	public final EqOnOffContext eqOnOff() throws RecognitionException {
10642 		EqOnOffContext _localctx = new EqOnOffContext(_ctx, getState());
10643 		enterRule(_localctx, 198, RULE_eqOnOff);
10644 		int _la;
10645 		try {
10646 			enterOuterAlt(_localctx, 1);
10647 			{
10648 			setState(1891);
10649 			match(EQ_);
10650 			setState(1892);
10651 			_la = _input.LA(1);
10652 			if ( !(_la==ON || _la==OFF) ) {
10653 			_errHandler.recoverInline(this);
10654 			}
10655 			else {
10656 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10657 				_errHandler.reportMatch(this);
10658 				consume();
10659 			}
10660 			}
10661 		}
10662 		catch (RecognitionException re) {
10663 			_localctx.exception = re;
10664 			_errHandler.reportError(this, re);
10665 			_errHandler.recover(this, re);
10666 		}
10667 		finally {
10668 			exitRule();
10669 		}
10670 		return _localctx;
10671 	}
10672 
10673 	public static class OnPartitionClauseContext extends ParserRuleContext {
10674 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
10675 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
10676 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10677 		public PartitionExpressionsContext partitionExpressions() {
10678 			return getRuleContext(PartitionExpressionsContext.class,0);
10679 		}
10680 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10681 		public OnPartitionClauseContext(ParserRuleContext parent, int invokingState) {
10682 			super(parent, invokingState);
10683 		}
10684 		@Override public int getRuleIndex() { return RULE_onPartitionClause; }
10685 		@Override
10686 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10687 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnPartitionClause(this);
10688 			else return visitor.visitChildren(this);
10689 		}
10690 	}
10691 
10692 	public final OnPartitionClauseContext onPartitionClause() throws RecognitionException {
10693 		OnPartitionClauseContext _localctx = new OnPartitionClauseContext(_ctx, getState());
10694 		enterRule(_localctx, 200, RULE_onPartitionClause);
10695 		try {
10696 			enterOuterAlt(_localctx, 1);
10697 			{
10698 			setState(1894);
10699 			match(ON);
10700 			setState(1895);
10701 			match(PARTITIONS);
10702 			setState(1896);
10703 			match(LP_);
10704 			setState(1897);
10705 			partitionExpressions();
10706 			setState(1898);
10707 			match(RP_);
10708 			}
10709 		}
10710 		catch (RecognitionException re) {
10711 			_localctx.exception = re;
10712 			_errHandler.reportError(this, re);
10713 			_errHandler.recover(this, re);
10714 		}
10715 		finally {
10716 			exitRule();
10717 		}
10718 		return _localctx;
10719 	}
10720 
10721 	public static class PartitionExpressionsContext extends ParserRuleContext {
10722 		public List<PartitionExpressionContext> partitionExpression() {
10723 			return getRuleContexts(PartitionExpressionContext.class);
10724 		}
10725 		public PartitionExpressionContext partitionExpression(int i) {
10726 			return getRuleContext(PartitionExpressionContext.class,i);
10727 		}
10728 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
10729 		public TerminalNode COMMA_(int i) {
10730 			return getToken(SQLServerStatementParser.COMMA_, i);
10731 		}
10732 		public PartitionExpressionsContext(ParserRuleContext parent, int invokingState) {
10733 			super(parent, invokingState);
10734 		}
10735 		@Override public int getRuleIndex() { return RULE_partitionExpressions; }
10736 		@Override
10737 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10738 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionExpressions(this);
10739 			else return visitor.visitChildren(this);
10740 		}
10741 	}
10742 
10743 	public final PartitionExpressionsContext partitionExpressions() throws RecognitionException {
10744 		PartitionExpressionsContext _localctx = new PartitionExpressionsContext(_ctx, getState());
10745 		enterRule(_localctx, 202, RULE_partitionExpressions);
10746 		int _la;
10747 		try {
10748 			enterOuterAlt(_localctx, 1);
10749 			{
10750 			setState(1900);
10751 			partitionExpression();
10752 			setState(1905);
10753 			_errHandler.sync(this);
10754 			_la = _input.LA(1);
10755 			while (_la==COMMA_) {
10756 				{
10757 				{
10758 				setState(1901);
10759 				match(COMMA_);
10760 				setState(1902);
10761 				partitionExpression();
10762 				}
10763 				}
10764 				setState(1907);
10765 				_errHandler.sync(this);
10766 				_la = _input.LA(1);
10767 			}
10768 			}
10769 		}
10770 		catch (RecognitionException re) {
10771 			_localctx.exception = re;
10772 			_errHandler.reportError(this, re);
10773 			_errHandler.recover(this, re);
10774 		}
10775 		finally {
10776 			exitRule();
10777 		}
10778 		return _localctx;
10779 	}
10780 
10781 	public static class PartitionExpressionContext extends ParserRuleContext {
10782 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10783 		public NumberRangeContext numberRange() {
10784 			return getRuleContext(NumberRangeContext.class,0);
10785 		}
10786 		public PartitionExpressionContext(ParserRuleContext parent, int invokingState) {
10787 			super(parent, invokingState);
10788 		}
10789 		@Override public int getRuleIndex() { return RULE_partitionExpression; }
10790 		@Override
10791 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10792 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionExpression(this);
10793 			else return visitor.visitChildren(this);
10794 		}
10795 	}
10796 
10797 	public final PartitionExpressionContext partitionExpression() throws RecognitionException {
10798 		PartitionExpressionContext _localctx = new PartitionExpressionContext(_ctx, getState());
10799 		enterRule(_localctx, 204, RULE_partitionExpression);
10800 		try {
10801 			setState(1910);
10802 			_errHandler.sync(this);
10803 			switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) {
10804 			case 1:
10805 				enterOuterAlt(_localctx, 1);
10806 				{
10807 				setState(1908);
10808 				match(NUMBER_);
10809 				}
10810 				break;
10811 			case 2:
10812 				enterOuterAlt(_localctx, 2);
10813 				{
10814 				setState(1909);
10815 				numberRange();
10816 				}
10817 				break;
10818 			}
10819 		}
10820 		catch (RecognitionException re) {
10821 			_localctx.exception = re;
10822 			_errHandler.reportError(this, re);
10823 			_errHandler.recover(this, re);
10824 		}
10825 		finally {
10826 			exitRule();
10827 		}
10828 		return _localctx;
10829 	}
10830 
10831 	public static class NumberRangeContext extends ParserRuleContext {
10832 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
10833 		public TerminalNode NUMBER_(int i) {
10834 			return getToken(SQLServerStatementParser.NUMBER_, i);
10835 		}
10836 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
10837 		public NumberRangeContext(ParserRuleContext parent, int invokingState) {
10838 			super(parent, invokingState);
10839 		}
10840 		@Override public int getRuleIndex() { return RULE_numberRange; }
10841 		@Override
10842 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10843 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNumberRange(this);
10844 			else return visitor.visitChildren(this);
10845 		}
10846 	}
10847 
10848 	public final NumberRangeContext numberRange() throws RecognitionException {
10849 		NumberRangeContext _localctx = new NumberRangeContext(_ctx, getState());
10850 		enterRule(_localctx, 206, RULE_numberRange);
10851 		try {
10852 			enterOuterAlt(_localctx, 1);
10853 			{
10854 			setState(1912);
10855 			match(NUMBER_);
10856 			setState(1913);
10857 			match(TO);
10858 			setState(1914);
10859 			match(NUMBER_);
10860 			}
10861 		}
10862 		catch (RecognitionException re) {
10863 			_localctx.exception = re;
10864 			_errHandler.reportError(this, re);
10865 			_errHandler.recover(this, re);
10866 		}
10867 		finally {
10868 			exitRule();
10869 		}
10870 		return _localctx;
10871 	}
10872 
10873 	public static class LowPriorityLockWaitContext extends ParserRuleContext {
10874 		public TerminalNode WAIT_AT_LOW_PRIORITY() { return getToken(SQLServerStatementParser.WAIT_AT_LOW_PRIORITY, 0); }
10875 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10876 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
10877 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
10878 		public TerminalNode EQ_(int i) {
10879 			return getToken(SQLServerStatementParser.EQ_, i);
10880 		}
10881 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10882 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
10883 		public TerminalNode ABORT_AFTER_WAIT() { return getToken(SQLServerStatementParser.ABORT_AFTER_WAIT, 0); }
10884 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10885 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
10886 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
10887 		public TerminalNode BLOCKERS() { return getToken(SQLServerStatementParser.BLOCKERS, 0); }
10888 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
10889 		public LowPriorityLockWaitContext(ParserRuleContext parent, int invokingState) {
10890 			super(parent, invokingState);
10891 		}
10892 		@Override public int getRuleIndex() { return RULE_lowPriorityLockWait; }
10893 		@Override
10894 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10895 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLowPriorityLockWait(this);
10896 			else return visitor.visitChildren(this);
10897 		}
10898 	}
10899 
10900 	public final LowPriorityLockWaitContext lowPriorityLockWait() throws RecognitionException {
10901 		LowPriorityLockWaitContext _localctx = new LowPriorityLockWaitContext(_ctx, getState());
10902 		enterRule(_localctx, 208, RULE_lowPriorityLockWait);
10903 		int _la;
10904 		try {
10905 			enterOuterAlt(_localctx, 1);
10906 			{
10907 			setState(1916);
10908 			match(WAIT_AT_LOW_PRIORITY);
10909 			setState(1917);
10910 			match(LP_);
10911 			setState(1918);
10912 			match(MAX_DURATION);
10913 			setState(1919);
10914 			match(EQ_);
10915 			setState(1920);
10916 			match(NUMBER_);
10917 			setState(1922);
10918 			_errHandler.sync(this);
10919 			_la = _input.LA(1);
10920 			if (_la==MINUTES) {
10921 				{
10922 				setState(1921);
10923 				match(MINUTES);
10924 				}
10925 			}
10926 
10927 			setState(1924);
10928 			match(COMMA_);
10929 			setState(1925);
10930 			match(ABORT_AFTER_WAIT);
10931 			setState(1926);
10932 			match(EQ_);
10933 			setState(1927);
10934 			_la = _input.LA(1);
10935 			if ( !(((((_la - 260)) & ~0x3f) == 0 && ((1L << (_la - 260)) & ((1L << (BLOCKERS - 260)) | (1L << (NONE - 260)) | (1L << (SELF - 260)))) != 0)) ) {
10936 			_errHandler.recoverInline(this);
10937 			}
10938 			else {
10939 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10940 				_errHandler.reportMatch(this);
10941 				consume();
10942 			}
10943 			setState(1928);
10944 			match(RP_);
10945 			}
10946 		}
10947 		catch (RecognitionException re) {
10948 			_localctx.exception = re;
10949 			_errHandler.reportError(this, re);
10950 			_errHandler.recover(this, re);
10951 		}
10952 		finally {
10953 			exitRule();
10954 		}
10955 		return _localctx;
10956 	}
10957 
10958 	public static class OnLowPriorLockWaitContext extends ParserRuleContext {
10959 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
10960 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10961 		public LowPriorityLockWaitContext lowPriorityLockWait() {
10962 			return getRuleContext(LowPriorityLockWaitContext.class,0);
10963 		}
10964 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10965 		public OnLowPriorLockWaitContext(ParserRuleContext parent, int invokingState) {
10966 			super(parent, invokingState);
10967 		}
10968 		@Override public int getRuleIndex() { return RULE_onLowPriorLockWait; }
10969 		@Override
10970 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10971 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnLowPriorLockWait(this);
10972 			else return visitor.visitChildren(this);
10973 		}
10974 	}
10975 
10976 	public final OnLowPriorLockWaitContext onLowPriorLockWait() throws RecognitionException {
10977 		OnLowPriorLockWaitContext _localctx = new OnLowPriorLockWaitContext(_ctx, getState());
10978 		enterRule(_localctx, 210, RULE_onLowPriorLockWait);
10979 		int _la;
10980 		try {
10981 			enterOuterAlt(_localctx, 1);
10982 			{
10983 			setState(1930);
10984 			match(ON);
10985 			setState(1935);
10986 			_errHandler.sync(this);
10987 			_la = _input.LA(1);
10988 			if (_la==LP_) {
10989 				{
10990 				setState(1931);
10991 				match(LP_);
10992 				setState(1932);
10993 				lowPriorityLockWait();
10994 				setState(1933);
10995 				match(RP_);
10996 				}
10997 			}
10998 
10999 			}
11000 		}
11001 		catch (RecognitionException re) {
11002 			_localctx.exception = re;
11003 			_errHandler.reportError(this, re);
11004 			_errHandler.recover(this, re);
11005 		}
11006 		finally {
11007 			exitRule();
11008 		}
11009 		return _localctx;
11010 	}
11011 
11012 	public static class IgnoredIdentifierContext extends ParserRuleContext {
11013 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
11014 		public IgnoredIdentifierContext(ParserRuleContext parent, int invokingState) {
11015 			super(parent, invokingState);
11016 		}
11017 		@Override public int getRuleIndex() { return RULE_ignoredIdentifier; }
11018 		@Override
11019 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11020 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredIdentifier(this);
11021 			else return visitor.visitChildren(this);
11022 		}
11023 	}
11024 
11025 	public final IgnoredIdentifierContext ignoredIdentifier() throws RecognitionException {
11026 		IgnoredIdentifierContext _localctx = new IgnoredIdentifierContext(_ctx, getState());
11027 		enterRule(_localctx, 212, RULE_ignoredIdentifier);
11028 		try {
11029 			enterOuterAlt(_localctx, 1);
11030 			{
11031 			setState(1937);
11032 			match(IDENTIFIER_);
11033 			}
11034 		}
11035 		catch (RecognitionException re) {
11036 			_localctx.exception = re;
11037 			_errHandler.reportError(this, re);
11038 			_errHandler.recover(this, re);
11039 		}
11040 		finally {
11041 			exitRule();
11042 		}
11043 		return _localctx;
11044 	}
11045 
11046 	public static class IgnoredIdentifiersContext extends ParserRuleContext {
11047 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
11048 			return getRuleContexts(IgnoredIdentifierContext.class);
11049 		}
11050 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
11051 			return getRuleContext(IgnoredIdentifierContext.class,i);
11052 		}
11053 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
11054 		public TerminalNode COMMA_(int i) {
11055 			return getToken(SQLServerStatementParser.COMMA_, i);
11056 		}
11057 		public IgnoredIdentifiersContext(ParserRuleContext parent, int invokingState) {
11058 			super(parent, invokingState);
11059 		}
11060 		@Override public int getRuleIndex() { return RULE_ignoredIdentifiers; }
11061 		@Override
11062 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11063 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredIdentifiers(this);
11064 			else return visitor.visitChildren(this);
11065 		}
11066 	}
11067 
11068 	public final IgnoredIdentifiersContext ignoredIdentifiers() throws RecognitionException {
11069 		IgnoredIdentifiersContext _localctx = new IgnoredIdentifiersContext(_ctx, getState());
11070 		enterRule(_localctx, 214, RULE_ignoredIdentifiers);
11071 		try {
11072 			int _alt;
11073 			enterOuterAlt(_localctx, 1);
11074 			{
11075 			setState(1939);
11076 			ignoredIdentifier();
11077 			setState(1944);
11078 			_errHandler.sync(this);
11079 			_alt = getInterpreter().adaptivePredict(_input,116,_ctx);
11080 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
11081 				if ( _alt==1 ) {
11082 					{
11083 					{
11084 					setState(1940);
11085 					match(COMMA_);
11086 					setState(1941);
11087 					ignoredIdentifier();
11088 					}
11089 					} 
11090 				}
11091 				setState(1946);
11092 				_errHandler.sync(this);
11093 				_alt = getInterpreter().adaptivePredict(_input,116,_ctx);
11094 			}
11095 			}
11096 		}
11097 		catch (RecognitionException re) {
11098 			_localctx.exception = re;
11099 			_errHandler.reportError(this, re);
11100 			_errHandler.recover(this, re);
11101 		}
11102 		finally {
11103 			exitRule();
11104 		}
11105 		return _localctx;
11106 	}
11107 
11108 	public static class MatchNoneContext extends ParserRuleContext {
11109 		public MatchNoneContext(ParserRuleContext parent, int invokingState) {
11110 			super(parent, invokingState);
11111 		}
11112 		@Override public int getRuleIndex() { return RULE_matchNone; }
11113 		@Override
11114 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11115 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMatchNone(this);
11116 			else return visitor.visitChildren(this);
11117 		}
11118 	}
11119 
11120 	public final MatchNoneContext matchNone() throws RecognitionException {
11121 		MatchNoneContext _localctx = new MatchNoneContext(_ctx, getState());
11122 		enterRule(_localctx, 216, RULE_matchNone);
11123 		try {
11124 			enterOuterAlt(_localctx, 1);
11125 			{
11126 			setState(1947);
11127 			match(T__0);
11128 			}
11129 		}
11130 		catch (RecognitionException re) {
11131 			_localctx.exception = re;
11132 			_errHandler.reportError(this, re);
11133 			_errHandler.recover(this, re);
11134 		}
11135 		finally {
11136 			exitRule();
11137 		}
11138 		return _localctx;
11139 	}
11140 
11141 	public static class VariableNameContext extends ParserRuleContext {
11142 		public IdentifierContext identifier() {
11143 			return getRuleContext(IdentifierContext.class,0);
11144 		}
11145 		public VariableNameContext(ParserRuleContext parent, int invokingState) {
11146 			super(parent, invokingState);
11147 		}
11148 		@Override public int getRuleIndex() { return RULE_variableName; }
11149 		@Override
11150 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11151 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableName(this);
11152 			else return visitor.visitChildren(this);
11153 		}
11154 	}
11155 
11156 	public final VariableNameContext variableName() throws RecognitionException {
11157 		VariableNameContext _localctx = new VariableNameContext(_ctx, getState());
11158 		enterRule(_localctx, 218, RULE_variableName);
11159 		try {
11160 			enterOuterAlt(_localctx, 1);
11161 			{
11162 			setState(1949);
11163 			identifier();
11164 			}
11165 		}
11166 		catch (RecognitionException re) {
11167 			_localctx.exception = re;
11168 			_errHandler.reportError(this, re);
11169 			_errHandler.recover(this, re);
11170 		}
11171 		finally {
11172 			exitRule();
11173 		}
11174 		return _localctx;
11175 	}
11176 
11177 	public static class ExecuteAsClauseContext extends ParserRuleContext {
11178 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
11179 		public TerminalNode EXEC() { return getToken(SQLServerStatementParser.EXEC, 0); }
11180 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
11181 		public TerminalNode CALLER() { return getToken(SQLServerStatementParser.CALLER, 0); }
11182 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
11183 		public TerminalNode OWNER() { return getToken(SQLServerStatementParser.OWNER, 0); }
11184 		public StringLiteralsContext stringLiterals() {
11185 			return getRuleContext(StringLiteralsContext.class,0);
11186 		}
11187 		public ExecuteAsClauseContext(ParserRuleContext parent, int invokingState) {
11188 			super(parent, invokingState);
11189 		}
11190 		@Override public int getRuleIndex() { return RULE_executeAsClause; }
11191 		@Override
11192 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11193 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExecuteAsClause(this);
11194 			else return visitor.visitChildren(this);
11195 		}
11196 	}
11197 
11198 	public final ExecuteAsClauseContext executeAsClause() throws RecognitionException {
11199 		ExecuteAsClauseContext _localctx = new ExecuteAsClauseContext(_ctx, getState());
11200 		enterRule(_localctx, 220, RULE_executeAsClause);
11201 		int _la;
11202 		try {
11203 			enterOuterAlt(_localctx, 1);
11204 			{
11205 			setState(1951);
11206 			_la = _input.LA(1);
11207 			if ( !(_la==EXECUTE || _la==EXEC) ) {
11208 			_errHandler.recoverInline(this);
11209 			}
11210 			else {
11211 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11212 				_errHandler.reportMatch(this);
11213 				consume();
11214 			}
11215 			setState(1952);
11216 			match(AS);
11217 			setState(1957);
11218 			_errHandler.sync(this);
11219 			switch (_input.LA(1)) {
11220 			case CALLER:
11221 				{
11222 				setState(1953);
11223 				match(CALLER);
11224 				}
11225 				break;
11226 			case SELF:
11227 				{
11228 				setState(1954);
11229 				match(SELF);
11230 				}
11231 				break;
11232 			case OWNER:
11233 				{
11234 				setState(1955);
11235 				match(OWNER);
11236 				}
11237 				break;
11238 			case STRING_:
11239 			case NCHAR_TEXT:
11240 				{
11241 				setState(1956);
11242 				stringLiterals();
11243 				}
11244 				break;
11245 			default:
11246 				throw new NoViableAltException(this);
11247 			}
11248 			}
11249 		}
11250 		catch (RecognitionException re) {
11251 			_localctx.exception = re;
11252 			_errHandler.reportError(this, re);
11253 			_errHandler.recover(this, re);
11254 		}
11255 		finally {
11256 			exitRule();
11257 		}
11258 		return _localctx;
11259 	}
11260 
11261 	public static class TransactionNameContext extends ParserRuleContext {
11262 		public IdentifierContext identifier() {
11263 			return getRuleContext(IdentifierContext.class,0);
11264 		}
11265 		public TransactionNameContext(ParserRuleContext parent, int invokingState) {
11266 			super(parent, invokingState);
11267 		}
11268 		@Override public int getRuleIndex() { return RULE_transactionName; }
11269 		@Override
11270 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11271 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTransactionName(this);
11272 			else return visitor.visitChildren(this);
11273 		}
11274 	}
11275 
11276 	public final TransactionNameContext transactionName() throws RecognitionException {
11277 		TransactionNameContext _localctx = new TransactionNameContext(_ctx, getState());
11278 		enterRule(_localctx, 222, RULE_transactionName);
11279 		try {
11280 			enterOuterAlt(_localctx, 1);
11281 			{
11282 			setState(1959);
11283 			identifier();
11284 			}
11285 		}
11286 		catch (RecognitionException re) {
11287 			_localctx.exception = re;
11288 			_errHandler.reportError(this, re);
11289 			_errHandler.recover(this, re);
11290 		}
11291 		finally {
11292 			exitRule();
11293 		}
11294 		return _localctx;
11295 	}
11296 
11297 	public static class TransactionVariableNameContext extends ParserRuleContext {
11298 		public VariableNameContext variableName() {
11299 			return getRuleContext(VariableNameContext.class,0);
11300 		}
11301 		public TransactionVariableNameContext(ParserRuleContext parent, int invokingState) {
11302 			super(parent, invokingState);
11303 		}
11304 		@Override public int getRuleIndex() { return RULE_transactionVariableName; }
11305 		@Override
11306 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11307 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTransactionVariableName(this);
11308 			else return visitor.visitChildren(this);
11309 		}
11310 	}
11311 
11312 	public final TransactionVariableNameContext transactionVariableName() throws RecognitionException {
11313 		TransactionVariableNameContext _localctx = new TransactionVariableNameContext(_ctx, getState());
11314 		enterRule(_localctx, 224, RULE_transactionVariableName);
11315 		try {
11316 			enterOuterAlt(_localctx, 1);
11317 			{
11318 			setState(1961);
11319 			variableName();
11320 			}
11321 		}
11322 		catch (RecognitionException re) {
11323 			_localctx.exception = re;
11324 			_errHandler.reportError(this, re);
11325 			_errHandler.recover(this, re);
11326 		}
11327 		finally {
11328 			exitRule();
11329 		}
11330 		return _localctx;
11331 	}
11332 
11333 	public static class SavepointNameContext extends ParserRuleContext {
11334 		public IdentifierContext identifier() {
11335 			return getRuleContext(IdentifierContext.class,0);
11336 		}
11337 		public SavepointNameContext(ParserRuleContext parent, int invokingState) {
11338 			super(parent, invokingState);
11339 		}
11340 		@Override public int getRuleIndex() { return RULE_savepointName; }
11341 		@Override
11342 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11343 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepointName(this);
11344 			else return visitor.visitChildren(this);
11345 		}
11346 	}
11347 
11348 	public final SavepointNameContext savepointName() throws RecognitionException {
11349 		SavepointNameContext _localctx = new SavepointNameContext(_ctx, getState());
11350 		enterRule(_localctx, 226, RULE_savepointName);
11351 		try {
11352 			enterOuterAlt(_localctx, 1);
11353 			{
11354 			setState(1963);
11355 			identifier();
11356 			}
11357 		}
11358 		catch (RecognitionException re) {
11359 			_localctx.exception = re;
11360 			_errHandler.reportError(this, re);
11361 			_errHandler.recover(this, re);
11362 		}
11363 		finally {
11364 			exitRule();
11365 		}
11366 		return _localctx;
11367 	}
11368 
11369 	public static class SavepointVariableNameContext extends ParserRuleContext {
11370 		public VariableNameContext variableName() {
11371 			return getRuleContext(VariableNameContext.class,0);
11372 		}
11373 		public SavepointVariableNameContext(ParserRuleContext parent, int invokingState) {
11374 			super(parent, invokingState);
11375 		}
11376 		@Override public int getRuleIndex() { return RULE_savepointVariableName; }
11377 		@Override
11378 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11379 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepointVariableName(this);
11380 			else return visitor.visitChildren(this);
11381 		}
11382 	}
11383 
11384 	public final SavepointVariableNameContext savepointVariableName() throws RecognitionException {
11385 		SavepointVariableNameContext _localctx = new SavepointVariableNameContext(_ctx, getState());
11386 		enterRule(_localctx, 228, RULE_savepointVariableName);
11387 		try {
11388 			enterOuterAlt(_localctx, 1);
11389 			{
11390 			setState(1965);
11391 			variableName();
11392 			}
11393 		}
11394 		catch (RecognitionException re) {
11395 			_localctx.exception = re;
11396 			_errHandler.reportError(this, re);
11397 			_errHandler.recover(this, re);
11398 		}
11399 		finally {
11400 			exitRule();
11401 		}
11402 		return _localctx;
11403 	}
11404 
11405 	public static class EntityTypeContext extends ParserRuleContext {
11406 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
11407 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
11408 		public EntityTypeContext(ParserRuleContext parent, int invokingState) {
11409 			super(parent, invokingState);
11410 		}
11411 		@Override public int getRuleIndex() { return RULE_entityType; }
11412 		@Override
11413 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11414 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEntityType(this);
11415 			else return visitor.visitChildren(this);
11416 		}
11417 	}
11418 
11419 	public final EntityTypeContext entityType() throws RecognitionException {
11420 		EntityTypeContext _localctx = new EntityTypeContext(_ctx, getState());
11421 		enterRule(_localctx, 230, RULE_entityType);
11422 		int _la;
11423 		try {
11424 			enterOuterAlt(_localctx, 1);
11425 			{
11426 			setState(1967);
11427 			_la = _input.LA(1);
11428 			if ( !(_la==TYPE || _la==OBJECT) ) {
11429 			_errHandler.recoverInline(this);
11430 			}
11431 			else {
11432 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11433 				_errHandler.reportMatch(this);
11434 				consume();
11435 			}
11436 			}
11437 		}
11438 		catch (RecognitionException re) {
11439 			_localctx.exception = re;
11440 			_errHandler.reportError(this, re);
11441 			_errHandler.recover(this, re);
11442 		}
11443 		finally {
11444 			exitRule();
11445 		}
11446 		return _localctx;
11447 	}
11448 
11449 	public static class IfExistsContext extends ParserRuleContext {
11450 		public TerminalNode IF() { return getToken(SQLServerStatementParser.IF, 0); }
11451 		public TerminalNode EXISTS() { return getToken(SQLServerStatementParser.EXISTS, 0); }
11452 		public IfExistsContext(ParserRuleContext parent, int invokingState) {
11453 			super(parent, invokingState);
11454 		}
11455 		@Override public int getRuleIndex() { return RULE_ifExists; }
11456 		@Override
11457 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11458 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIfExists(this);
11459 			else return visitor.visitChildren(this);
11460 		}
11461 	}
11462 
11463 	public final IfExistsContext ifExists() throws RecognitionException {
11464 		IfExistsContext _localctx = new IfExistsContext(_ctx, getState());
11465 		enterRule(_localctx, 232, RULE_ifExists);
11466 		try {
11467 			enterOuterAlt(_localctx, 1);
11468 			{
11469 			setState(1969);
11470 			match(IF);
11471 			setState(1970);
11472 			match(EXISTS);
11473 			}
11474 		}
11475 		catch (RecognitionException re) {
11476 			_localctx.exception = re;
11477 			_errHandler.reportError(this, re);
11478 			_errHandler.recover(this, re);
11479 		}
11480 		finally {
11481 			exitRule();
11482 		}
11483 		return _localctx;
11484 	}
11485 
11486 	public static class TableHintLimitedContext extends ParserRuleContext {
11487 		public TerminalNode KEEPIDENTITY() { return getToken(SQLServerStatementParser.KEEPIDENTITY, 0); }
11488 		public TerminalNode KEEPDEFAULTS() { return getToken(SQLServerStatementParser.KEEPDEFAULTS, 0); }
11489 		public TerminalNode HOLDLOCK() { return getToken(SQLServerStatementParser.HOLDLOCK, 0); }
11490 		public TerminalNode IGNORE_CONSTRAINTS() { return getToken(SQLServerStatementParser.IGNORE_CONSTRAINTS, 0); }
11491 		public TerminalNode IGNORE_TRIGGERS() { return getToken(SQLServerStatementParser.IGNORE_TRIGGERS, 0); }
11492 		public TerminalNode NOLOCK() { return getToken(SQLServerStatementParser.NOLOCK, 0); }
11493 		public TerminalNode NOWAIT() { return getToken(SQLServerStatementParser.NOWAIT, 0); }
11494 		public TerminalNode PAGLOCK() { return getToken(SQLServerStatementParser.PAGLOCK, 0); }
11495 		public TerminalNode READCOMMITTED() { return getToken(SQLServerStatementParser.READCOMMITTED, 0); }
11496 		public TerminalNode READCOMMITTEDLOCK() { return getToken(SQLServerStatementParser.READCOMMITTEDLOCK, 0); }
11497 		public TerminalNode READPAST() { return getToken(SQLServerStatementParser.READPAST, 0); }
11498 		public TerminalNode REPEATABLEREAD() { return getToken(SQLServerStatementParser.REPEATABLEREAD, 0); }
11499 		public TerminalNode ROWLOCK() { return getToken(SQLServerStatementParser.ROWLOCK, 0); }
11500 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
11501 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
11502 		public TerminalNode TABLOCK() { return getToken(SQLServerStatementParser.TABLOCK, 0); }
11503 		public TerminalNode TABLOCKX() { return getToken(SQLServerStatementParser.TABLOCKX, 0); }
11504 		public TerminalNode UPDLOCK() { return getToken(SQLServerStatementParser.UPDLOCK, 0); }
11505 		public TerminalNode XLOCK() { return getToken(SQLServerStatementParser.XLOCK, 0); }
11506 		public TableHintLimitedContext(ParserRuleContext parent, int invokingState) {
11507 			super(parent, invokingState);
11508 		}
11509 		@Override public int getRuleIndex() { return RULE_tableHintLimited; }
11510 		@Override
11511 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11512 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableHintLimited(this);
11513 			else return visitor.visitChildren(this);
11514 		}
11515 	}
11516 
11517 	public final TableHintLimitedContext tableHintLimited() throws RecognitionException {
11518 		TableHintLimitedContext _localctx = new TableHintLimitedContext(_ctx, getState());
11519 		enterRule(_localctx, 234, RULE_tableHintLimited);
11520 		int _la;
11521 		try {
11522 			enterOuterAlt(_localctx, 1);
11523 			{
11524 			setState(1972);
11525 			_la = _input.LA(1);
11526 			if ( !(((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (KEEPIDENTITY - 216)) | (1L << (KEEPDEFAULTS - 216)) | (1L << (HOLDLOCK - 216)) | (1L << (IGNORE_CONSTRAINTS - 216)) | (1L << (IGNORE_TRIGGERS - 216)) | (1L << (NOLOCK - 216)) | (1L << (NOWAIT - 216)) | (1L << (PAGLOCK - 216)) | (1L << (READCOMMITTED - 216)) | (1L << (READCOMMITTEDLOCK - 216)) | (1L << (READPAST - 216)) | (1L << (REPEATABLEREAD - 216)) | (1L << (ROWLOCK - 216)) | (1L << (TABLOCK - 216)) | (1L << (TABLOCKX - 216)) | (1L << (UPDLOCK - 216)) | (1L << (XLOCK - 216)))) != 0) || _la==SNAPSHOT || _la==SERIALIZABLE) ) {
11527 			_errHandler.recoverInline(this);
11528 			}
11529 			else {
11530 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11531 				_errHandler.reportMatch(this);
11532 				consume();
11533 			}
11534 			}
11535 		}
11536 		catch (RecognitionException re) {
11537 			_localctx.exception = re;
11538 			_errHandler.reportError(this, re);
11539 			_errHandler.recover(this, re);
11540 		}
11541 		finally {
11542 			exitRule();
11543 		}
11544 		return _localctx;
11545 	}
11546 
11547 	public static class CallContext extends ParserRuleContext {
11548 		public TerminalNode CALL() { return getToken(SQLServerStatementParser.CALL, 0); }
11549 		public CallContext(ParserRuleContext parent, int invokingState) {
11550 			super(parent, invokingState);
11551 		}
11552 		@Override public int getRuleIndex() { return RULE_call; }
11553 		@Override
11554 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11555 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCall(this);
11556 			else return visitor.visitChildren(this);
11557 		}
11558 	}
11559 
11560 	public final CallContext call() throws RecognitionException {
11561 		CallContext _localctx = new CallContext(_ctx, getState());
11562 		enterRule(_localctx, 236, RULE_call);
11563 		try {
11564 			enterOuterAlt(_localctx, 1);
11565 			{
11566 			setState(1974);
11567 			match(CALL);
11568 			}
11569 		}
11570 		catch (RecognitionException re) {
11571 			_localctx.exception = re;
11572 			_errHandler.reportError(this, re);
11573 			_errHandler.recover(this, re);
11574 		}
11575 		finally {
11576 			exitRule();
11577 		}
11578 		return _localctx;
11579 	}
11580 
11581 	public static class ExplainContext extends ParserRuleContext {
11582 		public TerminalNode EXPLAIN() { return getToken(SQLServerStatementParser.EXPLAIN, 0); }
11583 		public ExplainableStatementContext explainableStatement() {
11584 			return getRuleContext(ExplainableStatementContext.class,0);
11585 		}
11586 		public TerminalNode WITH_RECOMMENDATIONS() { return getToken(SQLServerStatementParser.WITH_RECOMMENDATIONS, 0); }
11587 		public ExplainContext(ParserRuleContext parent, int invokingState) {
11588 			super(parent, invokingState);
11589 		}
11590 		@Override public int getRuleIndex() { return RULE_explain; }
11591 		@Override
11592 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11593 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExplain(this);
11594 			else return visitor.visitChildren(this);
11595 		}
11596 	}
11597 
11598 	public final ExplainContext explain() throws RecognitionException {
11599 		ExplainContext _localctx = new ExplainContext(_ctx, getState());
11600 		enterRule(_localctx, 238, RULE_explain);
11601 		int _la;
11602 		try {
11603 			enterOuterAlt(_localctx, 1);
11604 			{
11605 			setState(1976);
11606 			match(EXPLAIN);
11607 			setState(1978);
11608 			_errHandler.sync(this);
11609 			_la = _input.LA(1);
11610 			if (_la==WITH_RECOMMENDATIONS) {
11611 				{
11612 				setState(1977);
11613 				match(WITH_RECOMMENDATIONS);
11614 				}
11615 			}
11616 
11617 			setState(1980);
11618 			explainableStatement();
11619 			}
11620 		}
11621 		catch (RecognitionException re) {
11622 			_localctx.exception = re;
11623 			_errHandler.reportError(this, re);
11624 			_errHandler.recover(this, re);
11625 		}
11626 		finally {
11627 			exitRule();
11628 		}
11629 		return _localctx;
11630 	}
11631 
11632 	public static class ExplainableStatementContext extends ParserRuleContext {
11633 		public SelectContext select() {
11634 			return getRuleContext(SelectContext.class,0);
11635 		}
11636 		public InsertContext insert() {
11637 			return getRuleContext(InsertContext.class,0);
11638 		}
11639 		public UpdateContext update() {
11640 			return getRuleContext(UpdateContext.class,0);
11641 		}
11642 		public DeleteContext delete() {
11643 			return getRuleContext(DeleteContext.class,0);
11644 		}
11645 		public CreateTableAsSelectClauseContext createTableAsSelectClause() {
11646 			return getRuleContext(CreateTableAsSelectClauseContext.class,0);
11647 		}
11648 		public ExplainableStatementContext(ParserRuleContext parent, int invokingState) {
11649 			super(parent, invokingState);
11650 		}
11651 		@Override public int getRuleIndex() { return RULE_explainableStatement; }
11652 		@Override
11653 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11654 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExplainableStatement(this);
11655 			else return visitor.visitChildren(this);
11656 		}
11657 	}
11658 
11659 	public final ExplainableStatementContext explainableStatement() throws RecognitionException {
11660 		ExplainableStatementContext _localctx = new ExplainableStatementContext(_ctx, getState());
11661 		enterRule(_localctx, 240, RULE_explainableStatement);
11662 		try {
11663 			setState(1987);
11664 			_errHandler.sync(this);
11665 			switch ( getInterpreter().adaptivePredict(_input,119,_ctx) ) {
11666 			case 1:
11667 				enterOuterAlt(_localctx, 1);
11668 				{
11669 				setState(1982);
11670 				select();
11671 				}
11672 				break;
11673 			case 2:
11674 				enterOuterAlt(_localctx, 2);
11675 				{
11676 				setState(1983);
11677 				insert();
11678 				}
11679 				break;
11680 			case 3:
11681 				enterOuterAlt(_localctx, 3);
11682 				{
11683 				setState(1984);
11684 				update();
11685 				}
11686 				break;
11687 			case 4:
11688 				enterOuterAlt(_localctx, 4);
11689 				{
11690 				setState(1985);
11691 				delete();
11692 				}
11693 				break;
11694 			case 5:
11695 				enterOuterAlt(_localctx, 5);
11696 				{
11697 				setState(1986);
11698 				createTableAsSelectClause();
11699 				}
11700 				break;
11701 			}
11702 		}
11703 		catch (RecognitionException re) {
11704 			_localctx.exception = re;
11705 			_errHandler.reportError(this, re);
11706 			_errHandler.recover(this, re);
11707 		}
11708 		finally {
11709 			exitRule();
11710 		}
11711 		return _localctx;
11712 	}
11713 
11714 	public static class CreateTableContext extends ParserRuleContext {
11715 		public CreateTableClauseContext createTableClause() {
11716 			return getRuleContext(CreateTableClauseContext.class,0);
11717 		}
11718 		public CreateTableAsSelectClauseContext createTableAsSelectClause() {
11719 			return getRuleContext(CreateTableAsSelectClauseContext.class,0);
11720 		}
11721 		public CreateTableContext(ParserRuleContext parent, int invokingState) {
11722 			super(parent, invokingState);
11723 		}
11724 		@Override public int getRuleIndex() { return RULE_createTable; }
11725 		@Override
11726 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11727 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTable(this);
11728 			else return visitor.visitChildren(this);
11729 		}
11730 	}
11731 
11732 	public final CreateTableContext createTable() throws RecognitionException {
11733 		CreateTableContext _localctx = new CreateTableContext(_ctx, getState());
11734 		enterRule(_localctx, 242, RULE_createTable);
11735 		try {
11736 			setState(1991);
11737 			_errHandler.sync(this);
11738 			switch ( getInterpreter().adaptivePredict(_input,120,_ctx) ) {
11739 			case 1:
11740 				enterOuterAlt(_localctx, 1);
11741 				{
11742 				setState(1989);
11743 				createTableClause();
11744 				}
11745 				break;
11746 			case 2:
11747 				enterOuterAlt(_localctx, 2);
11748 				{
11749 				setState(1990);
11750 				createTableAsSelectClause();
11751 				}
11752 				break;
11753 			}
11754 		}
11755 		catch (RecognitionException re) {
11756 			_localctx.exception = re;
11757 			_errHandler.reportError(this, re);
11758 			_errHandler.recover(this, re);
11759 		}
11760 		finally {
11761 			exitRule();
11762 		}
11763 		return _localctx;
11764 	}
11765 
11766 	public static class CreateTableClauseContext extends ParserRuleContext {
11767 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11768 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
11769 		public TableNameContext tableName() {
11770 			return getRuleContext(TableNameContext.class,0);
11771 		}
11772 		public FileTableClauseContext fileTableClause() {
11773 			return getRuleContext(FileTableClauseContext.class,0);
11774 		}
11775 		public CreateDefinitionClauseContext createDefinitionClause() {
11776 			return getRuleContext(CreateDefinitionClauseContext.class,0);
11777 		}
11778 		public CreateTableClauseContext(ParserRuleContext parent, int invokingState) {
11779 			super(parent, invokingState);
11780 		}
11781 		@Override public int getRuleIndex() { return RULE_createTableClause; }
11782 		@Override
11783 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11784 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableClause(this);
11785 			else return visitor.visitChildren(this);
11786 		}
11787 	}
11788 
11789 	public final CreateTableClauseContext createTableClause() throws RecognitionException {
11790 		CreateTableClauseContext _localctx = new CreateTableClauseContext(_ctx, getState());
11791 		enterRule(_localctx, 244, RULE_createTableClause);
11792 		try {
11793 			enterOuterAlt(_localctx, 1);
11794 			{
11795 			setState(1993);
11796 			match(CREATE);
11797 			setState(1994);
11798 			match(TABLE);
11799 			setState(1995);
11800 			tableName();
11801 			setState(1996);
11802 			fileTableClause();
11803 			setState(1997);
11804 			createDefinitionClause();
11805 			}
11806 		}
11807 		catch (RecognitionException re) {
11808 			_localctx.exception = re;
11809 			_errHandler.reportError(this, re);
11810 			_errHandler.recover(this, re);
11811 		}
11812 		finally {
11813 			exitRule();
11814 		}
11815 		return _localctx;
11816 	}
11817 
11818 	public static class CreateIndexContext extends ParserRuleContext {
11819 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11820 		public CreateIndexSpecificationContext createIndexSpecification() {
11821 			return getRuleContext(CreateIndexSpecificationContext.class,0);
11822 		}
11823 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
11824 		public IndexNameContext indexName() {
11825 			return getRuleContext(IndexNameContext.class,0);
11826 		}
11827 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11828 		public TableNameContext tableName() {
11829 			return getRuleContext(TableNameContext.class,0);
11830 		}
11831 		public ColumnNamesWithSortContext columnNamesWithSort() {
11832 			return getRuleContext(ColumnNamesWithSortContext.class,0);
11833 		}
11834 		public CreateIndexClauseContext createIndexClause() {
11835 			return getRuleContext(CreateIndexClauseContext.class,0);
11836 		}
11837 		public CreateIndexContext(ParserRuleContext parent, int invokingState) {
11838 			super(parent, invokingState);
11839 		}
11840 		@Override public int getRuleIndex() { return RULE_createIndex; }
11841 		@Override
11842 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11843 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndex(this);
11844 			else return visitor.visitChildren(this);
11845 		}
11846 	}
11847 
11848 	public final CreateIndexContext createIndex() throws RecognitionException {
11849 		CreateIndexContext _localctx = new CreateIndexContext(_ctx, getState());
11850 		enterRule(_localctx, 246, RULE_createIndex);
11851 		try {
11852 			enterOuterAlt(_localctx, 1);
11853 			{
11854 			setState(1999);
11855 			match(CREATE);
11856 			setState(2000);
11857 			createIndexSpecification();
11858 			setState(2001);
11859 			match(INDEX);
11860 			setState(2002);
11861 			indexName();
11862 			setState(2003);
11863 			match(ON);
11864 			setState(2004);
11865 			tableName();
11866 			setState(2005);
11867 			columnNamesWithSort();
11868 			setState(2006);
11869 			createIndexClause();
11870 			}
11871 		}
11872 		catch (RecognitionException re) {
11873 			_localctx.exception = re;
11874 			_errHandler.reportError(this, re);
11875 			_errHandler.recover(this, re);
11876 		}
11877 		finally {
11878 			exitRule();
11879 		}
11880 		return _localctx;
11881 	}
11882 
11883 	public static class CreateDatabaseContext extends ParserRuleContext {
11884 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11885 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
11886 		public DatabaseNameContext databaseName() {
11887 			return getRuleContext(DatabaseNameContext.class,0);
11888 		}
11889 		public CreateDatabaseClauseContext createDatabaseClause() {
11890 			return getRuleContext(CreateDatabaseClauseContext.class,0);
11891 		}
11892 		public CreateDatabaseContext(ParserRuleContext parent, int invokingState) {
11893 			super(parent, invokingState);
11894 		}
11895 		@Override public int getRuleIndex() { return RULE_createDatabase; }
11896 		@Override
11897 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11898 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDatabase(this);
11899 			else return visitor.visitChildren(this);
11900 		}
11901 	}
11902 
11903 	public final CreateDatabaseContext createDatabase() throws RecognitionException {
11904 		CreateDatabaseContext _localctx = new CreateDatabaseContext(_ctx, getState());
11905 		enterRule(_localctx, 248, RULE_createDatabase);
11906 		try {
11907 			enterOuterAlt(_localctx, 1);
11908 			{
11909 			setState(2008);
11910 			match(CREATE);
11911 			setState(2009);
11912 			match(DATABASE);
11913 			setState(2010);
11914 			databaseName();
11915 			setState(2011);
11916 			createDatabaseClause();
11917 			}
11918 		}
11919 		catch (RecognitionException re) {
11920 			_localctx.exception = re;
11921 			_errHandler.reportError(this, re);
11922 			_errHandler.recover(this, re);
11923 		}
11924 		finally {
11925 			exitRule();
11926 		}
11927 		return _localctx;
11928 	}
11929 
11930 	public static class CreateFunctionContext extends ParserRuleContext {
11931 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11932 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
11933 		public FunctionNameContext functionName() {
11934 			return getRuleContext(FunctionNameContext.class,0);
11935 		}
11936 		public FuncParametersContext funcParameters() {
11937 			return getRuleContext(FuncParametersContext.class,0);
11938 		}
11939 		public FuncReturnsContext funcReturns() {
11940 			return getRuleContext(FuncReturnsContext.class,0);
11941 		}
11942 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
11943 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11944 		public CreateFunctionContext(ParserRuleContext parent, int invokingState) {
11945 			super(parent, invokingState);
11946 		}
11947 		@Override public int getRuleIndex() { return RULE_createFunction; }
11948 		@Override
11949 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11950 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateFunction(this);
11951 			else return visitor.visitChildren(this);
11952 		}
11953 	}
11954 
11955 	public final CreateFunctionContext createFunction() throws RecognitionException {
11956 		CreateFunctionContext _localctx = new CreateFunctionContext(_ctx, getState());
11957 		enterRule(_localctx, 250, RULE_createFunction);
11958 		int _la;
11959 		try {
11960 			enterOuterAlt(_localctx, 1);
11961 			{
11962 			setState(2013);
11963 			match(CREATE);
11964 			setState(2016);
11965 			_errHandler.sync(this);
11966 			_la = _input.LA(1);
11967 			if (_la==OR) {
11968 				{
11969 				setState(2014);
11970 				match(OR);
11971 				setState(2015);
11972 				match(ALTER);
11973 				}
11974 			}
11975 
11976 			setState(2018);
11977 			match(FUNCTION);
11978 			setState(2019);
11979 			functionName();
11980 			setState(2020);
11981 			funcParameters();
11982 			setState(2021);
11983 			funcReturns();
11984 			}
11985 		}
11986 		catch (RecognitionException re) {
11987 			_localctx.exception = re;
11988 			_errHandler.reportError(this, re);
11989 			_errHandler.recover(this, re);
11990 		}
11991 		finally {
11992 			exitRule();
11993 		}
11994 		return _localctx;
11995 	}
11996 
11997 	public static class CreateProcedureContext extends ParserRuleContext {
11998 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11999 		public ProcedureNameContext procedureName() {
12000 			return getRuleContext(ProcedureNameContext.class,0);
12001 		}
12002 		public ProcParametersContext procParameters() {
12003 			return getRuleContext(ProcParametersContext.class,0);
12004 		}
12005 		public CreateOrAlterProcClauseContext createOrAlterProcClause() {
12006 			return getRuleContext(CreateOrAlterProcClauseContext.class,0);
12007 		}
12008 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
12009 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
12010 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
12011 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12012 		public CreateProcedureContext(ParserRuleContext parent, int invokingState) {
12013 			super(parent, invokingState);
12014 		}
12015 		@Override public int getRuleIndex() { return RULE_createProcedure; }
12016 		@Override
12017 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12018 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateProcedure(this);
12019 			else return visitor.visitChildren(this);
12020 		}
12021 	}
12022 
12023 	public final CreateProcedureContext createProcedure() throws RecognitionException {
12024 		CreateProcedureContext _localctx = new CreateProcedureContext(_ctx, getState());
12025 		enterRule(_localctx, 252, RULE_createProcedure);
12026 		int _la;
12027 		try {
12028 			enterOuterAlt(_localctx, 1);
12029 			{
12030 			setState(2023);
12031 			match(CREATE);
12032 			setState(2026);
12033 			_errHandler.sync(this);
12034 			_la = _input.LA(1);
12035 			if (_la==OR) {
12036 				{
12037 				setState(2024);
12038 				match(OR);
12039 				setState(2025);
12040 				match(ALTER);
12041 				}
12042 			}
12043 
12044 			setState(2028);
12045 			_la = _input.LA(1);
12046 			if ( !(_la==PROCEDURE || _la==PROC) ) {
12047 			_errHandler.recoverInline(this);
12048 			}
12049 			else {
12050 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
12051 				_errHandler.reportMatch(this);
12052 				consume();
12053 			}
12054 			setState(2029);
12055 			procedureName();
12056 			setState(2030);
12057 			procParameters();
12058 			setState(2031);
12059 			createOrAlterProcClause();
12060 			}
12061 		}
12062 		catch (RecognitionException re) {
12063 			_localctx.exception = re;
12064 			_errHandler.reportError(this, re);
12065 			_errHandler.recover(this, re);
12066 		}
12067 		finally {
12068 			exitRule();
12069 		}
12070 		return _localctx;
12071 	}
12072 
12073 	public static class CreateViewContext extends ParserRuleContext {
12074 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12075 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
12076 		public ViewNameContext viewName() {
12077 			return getRuleContext(ViewNameContext.class,0);
12078 		}
12079 		public CreateOrAlterViewClauseContext createOrAlterViewClause() {
12080 			return getRuleContext(CreateOrAlterViewClauseContext.class,0);
12081 		}
12082 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
12083 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12084 		public CreateViewContext(ParserRuleContext parent, int invokingState) {
12085 			super(parent, invokingState);
12086 		}
12087 		@Override public int getRuleIndex() { return RULE_createView; }
12088 		@Override
12089 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12090 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateView(this);
12091 			else return visitor.visitChildren(this);
12092 		}
12093 	}
12094 
12095 	public final CreateViewContext createView() throws RecognitionException {
12096 		CreateViewContext _localctx = new CreateViewContext(_ctx, getState());
12097 		enterRule(_localctx, 254, RULE_createView);
12098 		int _la;
12099 		try {
12100 			enterOuterAlt(_localctx, 1);
12101 			{
12102 			setState(2033);
12103 			match(CREATE);
12104 			setState(2036);
12105 			_errHandler.sync(this);
12106 			_la = _input.LA(1);
12107 			if (_la==OR) {
12108 				{
12109 				setState(2034);
12110 				match(OR);
12111 				setState(2035);
12112 				match(ALTER);
12113 				}
12114 			}
12115 
12116 			setState(2038);
12117 			match(VIEW);
12118 			setState(2039);
12119 			viewName();
12120 			setState(2040);
12121 			createOrAlterViewClause();
12122 			}
12123 		}
12124 		catch (RecognitionException re) {
12125 			_localctx.exception = re;
12126 			_errHandler.reportError(this, re);
12127 			_errHandler.recover(this, re);
12128 		}
12129 		finally {
12130 			exitRule();
12131 		}
12132 		return _localctx;
12133 	}
12134 
12135 	public static class CreateTriggerContext extends ParserRuleContext {
12136 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12137 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
12138 		public TriggerNameContext triggerName() {
12139 			return getRuleContext(TriggerNameContext.class,0);
12140 		}
12141 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
12142 		public TriggerTargetContext triggerTarget() {
12143 			return getRuleContext(TriggerTargetContext.class,0);
12144 		}
12145 		public CreateTriggerClauseContext createTriggerClause() {
12146 			return getRuleContext(CreateTriggerClauseContext.class,0);
12147 		}
12148 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
12149 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12150 		public CreateTriggerContext(ParserRuleContext parent, int invokingState) {
12151 			super(parent, invokingState);
12152 		}
12153 		@Override public int getRuleIndex() { return RULE_createTrigger; }
12154 		@Override
12155 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12156 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTrigger(this);
12157 			else return visitor.visitChildren(this);
12158 		}
12159 	}
12160 
12161 	public final CreateTriggerContext createTrigger() throws RecognitionException {
12162 		CreateTriggerContext _localctx = new CreateTriggerContext(_ctx, getState());
12163 		enterRule(_localctx, 256, RULE_createTrigger);
12164 		int _la;
12165 		try {
12166 			enterOuterAlt(_localctx, 1);
12167 			{
12168 			setState(2042);
12169 			match(CREATE);
12170 			setState(2045);
12171 			_errHandler.sync(this);
12172 			_la = _input.LA(1);
12173 			if (_la==OR) {
12174 				{
12175 				setState(2043);
12176 				match(OR);
12177 				setState(2044);
12178 				match(ALTER);
12179 				}
12180 			}
12181 
12182 			setState(2047);
12183 			match(TRIGGER);
12184 			setState(2048);
12185 			triggerName();
12186 			setState(2049);
12187 			match(ON);
12188 			setState(2050);
12189 			triggerTarget();
12190 			setState(2051);
12191 			createTriggerClause();
12192 			}
12193 		}
12194 		catch (RecognitionException re) {
12195 			_localctx.exception = re;
12196 			_errHandler.reportError(this, re);
12197 			_errHandler.recover(this, re);
12198 		}
12199 		finally {
12200 			exitRule();
12201 		}
12202 		return _localctx;
12203 	}
12204 
12205 	public static class CreateSequenceContext extends ParserRuleContext {
12206 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12207 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
12208 		public SequenceNameContext sequenceName() {
12209 			return getRuleContext(SequenceNameContext.class,0);
12210 		}
12211 		public List<CreateOrAlterSequenceClauseContext> createOrAlterSequenceClause() {
12212 			return getRuleContexts(CreateOrAlterSequenceClauseContext.class);
12213 		}
12214 		public CreateOrAlterSequenceClauseContext createOrAlterSequenceClause(int i) {
12215 			return getRuleContext(CreateOrAlterSequenceClauseContext.class,i);
12216 		}
12217 		public CreateSequenceContext(ParserRuleContext parent, int invokingState) {
12218 			super(parent, invokingState);
12219 		}
12220 		@Override public int getRuleIndex() { return RULE_createSequence; }
12221 		@Override
12222 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12223 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateSequence(this);
12224 			else return visitor.visitChildren(this);
12225 		}
12226 	}
12227 
12228 	public final CreateSequenceContext createSequence() throws RecognitionException {
12229 		CreateSequenceContext _localctx = new CreateSequenceContext(_ctx, getState());
12230 		enterRule(_localctx, 258, RULE_createSequence);
12231 		int _la;
12232 		try {
12233 			enterOuterAlt(_localctx, 1);
12234 			{
12235 			setState(2053);
12236 			match(CREATE);
12237 			setState(2054);
12238 			match(SEQUENCE);
12239 			setState(2055);
12240 			sequenceName();
12241 			setState(2059);
12242 			_errHandler.sync(this);
12243 			_la = _input.LA(1);
12244 			while (_la==AS || _la==NO || _la==START || ((((_la - 541)) & ~0x3f) == 0 && ((1L << (_la - 541)) & ((1L << (INCREMENT - 541)) | (1L << (CYCLE - 541)) | (1L << (CACHE - 541)) | (1L << (MINVALUE - 541)) | (1L << (MAXVALUE - 541)) | (1L << (RESTART - 541)))) != 0)) {
12245 				{
12246 				{
12247 				setState(2056);
12248 				createOrAlterSequenceClause();
12249 				}
12250 				}
12251 				setState(2061);
12252 				_errHandler.sync(this);
12253 				_la = _input.LA(1);
12254 			}
12255 			}
12256 		}
12257 		catch (RecognitionException re) {
12258 			_localctx.exception = re;
12259 			_errHandler.reportError(this, re);
12260 			_errHandler.recover(this, re);
12261 		}
12262 		finally {
12263 			exitRule();
12264 		}
12265 		return _localctx;
12266 	}
12267 
12268 	public static class CreateServiceContext extends ParserRuleContext {
12269 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12270 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
12271 		public ServiceNameContext serviceName() {
12272 			return getRuleContext(ServiceNameContext.class,0);
12273 		}
12274 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
12275 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
12276 		public QueueNameContext queueName() {
12277 			return getRuleContext(QueueNameContext.class,0);
12278 		}
12279 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
12280 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
12281 		public CreateServiceClauseContext createServiceClause() {
12282 			return getRuleContext(CreateServiceClauseContext.class,0);
12283 		}
12284 		public CreateServiceContext(ParserRuleContext parent, int invokingState) {
12285 			super(parent, invokingState);
12286 		}
12287 		@Override public int getRuleIndex() { return RULE_createService; }
12288 		@Override
12289 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12290 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateService(this);
12291 			else return visitor.visitChildren(this);
12292 		}
12293 	}
12294 
12295 	public final CreateServiceContext createService() throws RecognitionException {
12296 		CreateServiceContext _localctx = new CreateServiceContext(_ctx, getState());
12297 		enterRule(_localctx, 260, RULE_createService);
12298 		int _la;
12299 		try {
12300 			enterOuterAlt(_localctx, 1);
12301 			{
12302 			setState(2062);
12303 			match(CREATE);
12304 			setState(2063);
12305 			match(SERVICE);
12306 			setState(2064);
12307 			serviceName();
12308 			setState(2067);
12309 			_errHandler.sync(this);
12310 			_la = _input.LA(1);
12311 			if (_la==AUTHORIZATION) {
12312 				{
12313 				setState(2065);
12314 				match(AUTHORIZATION);
12315 				setState(2066);
12316 				match(STRING_);
12317 				}
12318 			}
12319 
12320 			setState(2069);
12321 			match(ON);
12322 			setState(2070);
12323 			match(QUEUE);
12324 			setState(2071);
12325 			queueName();
12326 			setState(2073);
12327 			_errHandler.sync(this);
12328 			_la = _input.LA(1);
12329 			if (_la==LP_) {
12330 				{
12331 				setState(2072);
12332 				createServiceClause();
12333 				}
12334 			}
12335 
12336 			}
12337 		}
12338 		catch (RecognitionException re) {
12339 			_localctx.exception = re;
12340 			_errHandler.reportError(this, re);
12341 			_errHandler.recover(this, re);
12342 		}
12343 		finally {
12344 			exitRule();
12345 		}
12346 		return _localctx;
12347 	}
12348 
12349 	public static class CreateSchemaContext extends ParserRuleContext {
12350 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12351 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
12352 		public SchemaNameClauseContext schemaNameClause() {
12353 			return getRuleContext(SchemaNameClauseContext.class,0);
12354 		}
12355 		public List<SchemaElementContext> schemaElement() {
12356 			return getRuleContexts(SchemaElementContext.class);
12357 		}
12358 		public SchemaElementContext schemaElement(int i) {
12359 			return getRuleContext(SchemaElementContext.class,i);
12360 		}
12361 		public CreateSchemaContext(ParserRuleContext parent, int invokingState) {
12362 			super(parent, invokingState);
12363 		}
12364 		@Override public int getRuleIndex() { return RULE_createSchema; }
12365 		@Override
12366 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12367 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateSchema(this);
12368 			else return visitor.visitChildren(this);
12369 		}
12370 	}
12371 
12372 	public final CreateSchemaContext createSchema() throws RecognitionException {
12373 		CreateSchemaContext _localctx = new CreateSchemaContext(_ctx, getState());
12374 		enterRule(_localctx, 262, RULE_createSchema);
12375 		int _la;
12376 		try {
12377 			enterOuterAlt(_localctx, 1);
12378 			{
12379 			setState(2075);
12380 			match(CREATE);
12381 			setState(2076);
12382 			match(SCHEMA);
12383 			setState(2077);
12384 			schemaNameClause();
12385 			setState(2081);
12386 			_errHandler.sync(this);
12387 			_la = _input.LA(1);
12388 			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CREATE) | (1L << GRANT) | (1L << REVOKE))) != 0) || _la==DENY) {
12389 				{
12390 				{
12391 				setState(2078);
12392 				schemaElement();
12393 				}
12394 				}
12395 				setState(2083);
12396 				_errHandler.sync(this);
12397 				_la = _input.LA(1);
12398 			}
12399 			}
12400 		}
12401 		catch (RecognitionException re) {
12402 			_localctx.exception = re;
12403 			_errHandler.reportError(this, re);
12404 			_errHandler.recover(this, re);
12405 		}
12406 		finally {
12407 			exitRule();
12408 		}
12409 		return _localctx;
12410 	}
12411 
12412 	public static class AlterTableContext extends ParserRuleContext {
12413 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12414 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
12415 		public TableNameContext tableName() {
12416 			return getRuleContext(TableNameContext.class,0);
12417 		}
12418 		public List<AlterDefinitionClauseContext> alterDefinitionClause() {
12419 			return getRuleContexts(AlterDefinitionClauseContext.class);
12420 		}
12421 		public AlterDefinitionClauseContext alterDefinitionClause(int i) {
12422 			return getRuleContext(AlterDefinitionClauseContext.class,i);
12423 		}
12424 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
12425 		public TerminalNode COMMA_(int i) {
12426 			return getToken(SQLServerStatementParser.COMMA_, i);
12427 		}
12428 		public AlterTableContext(ParserRuleContext parent, int invokingState) {
12429 			super(parent, invokingState);
12430 		}
12431 		@Override public int getRuleIndex() { return RULE_alterTable; }
12432 		@Override
12433 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12434 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTable(this);
12435 			else return visitor.visitChildren(this);
12436 		}
12437 	}
12438 
12439 	public final AlterTableContext alterTable() throws RecognitionException {
12440 		AlterTableContext _localctx = new AlterTableContext(_ctx, getState());
12441 		enterRule(_localctx, 264, RULE_alterTable);
12442 		int _la;
12443 		try {
12444 			enterOuterAlt(_localctx, 1);
12445 			{
12446 			setState(2084);
12447 			match(ALTER);
12448 			setState(2085);
12449 			match(TABLE);
12450 			setState(2086);
12451 			tableName();
12452 			setState(2087);
12453 			alterDefinitionClause();
12454 			setState(2092);
12455 			_errHandler.sync(this);
12456 			_la = _input.LA(1);
12457 			while (_la==COMMA_) {
12458 				{
12459 				{
12460 				setState(2088);
12461 				match(COMMA_);
12462 				setState(2089);
12463 				alterDefinitionClause();
12464 				}
12465 				}
12466 				setState(2094);
12467 				_errHandler.sync(this);
12468 				_la = _input.LA(1);
12469 			}
12470 			}
12471 		}
12472 		catch (RecognitionException re) {
12473 			_localctx.exception = re;
12474 			_errHandler.reportError(this, re);
12475 			_errHandler.recover(this, re);
12476 		}
12477 		finally {
12478 			exitRule();
12479 		}
12480 		return _localctx;
12481 	}
12482 
12483 	public static class AlterIndexContext extends ParserRuleContext {
12484 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12485 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
12486 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
12487 		public TableNameContext tableName() {
12488 			return getRuleContext(TableNameContext.class,0);
12489 		}
12490 		public AlterIndexClauseContext alterIndexClause() {
12491 			return getRuleContext(AlterIndexClauseContext.class,0);
12492 		}
12493 		public IndexNameContext indexName() {
12494 			return getRuleContext(IndexNameContext.class,0);
12495 		}
12496 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
12497 		public AlterIndexContext(ParserRuleContext parent, int invokingState) {
12498 			super(parent, invokingState);
12499 		}
12500 		@Override public int getRuleIndex() { return RULE_alterIndex; }
12501 		@Override
12502 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12503 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterIndex(this);
12504 			else return visitor.visitChildren(this);
12505 		}
12506 	}
12507 
12508 	public final AlterIndexContext alterIndex() throws RecognitionException {
12509 		AlterIndexContext _localctx = new AlterIndexContext(_ctx, getState());
12510 		enterRule(_localctx, 266, RULE_alterIndex);
12511 		try {
12512 			enterOuterAlt(_localctx, 1);
12513 			{
12514 			setState(2095);
12515 			match(ALTER);
12516 			setState(2096);
12517 			match(INDEX);
12518 			setState(2099);
12519 			_errHandler.sync(this);
12520 			switch (_input.LA(1)) {
12521 			case TRUNCATE:
12522 			case SCHEMA:
12523 			case COLUMNS:
12524 			case PRECISION:
12525 			case FUNCTION:
12526 			case TRIGGER:
12527 			case CAST:
12528 			case SUBSTRING:
12529 			case OFF:
12530 			case GROUP:
12531 			case LIMIT:
12532 			case OFFSET:
12533 			case SAVEPOINT:
12534 			case BOOLEAN:
12535 			case ARRAY:
12536 			case DATE:
12537 			case LOCALTIME:
12538 			case LOCALTIMESTAMP:
12539 			case QUARTER:
12540 			case MONTH:
12541 			case WEEK:
12542 			case DAY:
12543 			case SECOND:
12544 			case MICROSECOND:
12545 			case MAX:
12546 			case MIN:
12547 			case SUM:
12548 			case COUNT:
12549 			case AVG:
12550 			case ENABLE:
12551 			case DISABLE:
12552 			case INSTANCE:
12553 			case DO:
12554 			case DEFINER:
12555 			case SQL:
12556 			case CASCADED:
12557 			case LOCAL:
12558 			case NEXT:
12559 			case NAME:
12560 			case INTEGER:
12561 			case TYPE:
12562 			case TEXT:
12563 			case VIEWS:
12564 			case READ_ONLY:
12565 			case DATABASE:
12566 			case RETURNS:
12567 			case DATEPART:
12568 			case PASSWORD:
12569 			case BINARY:
12570 			case HIDDEN_:
12571 			case MOD:
12572 			case PARTITION:
12573 			case PARTITIONS:
12574 			case TOP:
12575 			case ROW:
12576 			case ROWS:
12577 			case XOR:
12578 			case ALWAYS:
12579 			case ROLE:
12580 			case START:
12581 			case ALGORITHM:
12582 			case AUTO:
12583 			case BLOCKERS:
12584 			case CLUSTERED:
12585 			case NONCLUSTERED:
12586 			case COLUMNSTORE:
12587 			case CONTENT:
12588 			case YEARS:
12589 			case MONTHS:
12590 			case WEEKS:
12591 			case DAYS:
12592 			case MINUTES:
12593 			case DENY:
12594 			case DETERMINISTIC:
12595 			case DISTRIBUTION:
12596 			case DOCUMENT:
12597 			case DURABILITY:
12598 			case ENCRYPTED:
12599 			case FILESTREAM:
12600 			case FILETABLE:
12601 			case FILLFACTOR:
12602 			case FOLLOWING:
12603 			case HASH:
12604 			case HEAP:
12605 			case INBOUND:
12606 			case OUTBOUND:
12607 			case UNBOUNDED:
12608 			case INFINITE:
12609 			case LOGIN:
12610 			case MASKED:
12611 			case MAXDOP:
12612 			case MOVE:
12613 			case NOCHECK:
12614 			case OBJECT:
12615 			case ONLINE:
12616 			case OVER:
12617 			case PAGE:
12618 			case PAUSED:
12619 			case PERIOD:
12620 			case PERSISTED:
12621 			case PRECEDING:
12622 			case RANDOMIZED:
12623 			case RANGE:
12624 			case REBUILD:
12625 			case REPLICATE:
12626 			case REPLICATION:
12627 			case RESUMABLE:
12628 			case ROWGUIDCOL:
12629 			case SAVE:
12630 			case SELF:
12631 			case SPARSE:
12632 			case SWITCH:
12633 			case TRAN:
12634 			case TRANCOUNT:
12635 			case CONTROL:
12636 			case CONCAT:
12637 			case TAKE:
12638 			case OWNERSHIP:
12639 			case DEFINITION:
12640 			case APPLICATION:
12641 			case ASSEMBLY:
12642 			case SYMMETRIC:
12643 			case ASYMMETRIC:
12644 			case SERVER:
12645 			case RECEIVE:
12646 			case CHANGE:
12647 			case TRACE:
12648 			case TRACKING:
12649 			case RESOURCES:
12650 			case SETTINGS:
12651 			case STATE:
12652 			case AVAILABILITY:
12653 			case CREDENTIAL:
12654 			case ENDPOINT:
12655 			case EVENT:
12656 			case NOTIFICATION:
12657 			case LINKED:
12658 			case AUDIT:
12659 			case DDL:
12660 			case XML:
12661 			case IMPERSONATE:
12662 			case SECURABLES:
12663 			case AUTHENTICATE:
12664 			case EXTERNAL:
12665 			case ACCESS:
12666 			case ADMINISTER:
12667 			case BULK:
12668 			case OPERATIONS:
12669 			case UNSAFE:
12670 			case SHUTDOWN:
12671 			case SCOPED:
12672 			case CONFIGURATION:
12673 			case DATASPACE:
12674 			case SERVICE:
12675 			case CERTIFICATE:
12676 			case CONTRACT:
12677 			case ENCRYPTION:
12678 			case MASTER:
12679 			case DATA:
12680 			case SOURCE:
12681 			case FILE:
12682 			case FORMAT:
12683 			case LIBRARY:
12684 			case FULLTEXT:
12685 			case MASK:
12686 			case UNMASK:
12687 			case MESSAGE:
12688 			case REMOTE:
12689 			case BINDING:
12690 			case ROUTE:
12691 			case SECURITY:
12692 			case POLICY:
12693 			case AGGREGATE:
12694 			case QUEUE:
12695 			case RULE:
12696 			case SYNONYM:
12697 			case COLLECTION:
12698 			case SCRIPT:
12699 			case KILL:
12700 			case BACKUP:
12701 			case LOG:
12702 			case SHOWPLAN:
12703 			case SUBSCRIBE:
12704 			case QUERY:
12705 			case NOTIFICATIONS:
12706 			case CHECKPOINT:
12707 			case SEQUENCE:
12708 			case ABORT_AFTER_WAIT:
12709 			case ALLOW_PAGE_LOCKS:
12710 			case ALLOW_ROW_LOCKS:
12711 			case ALL_SPARSE_COLUMNS:
12712 			case BUCKET_COUNT:
12713 			case COLUMNSTORE_ARCHIVE:
12714 			case COLUMN_ENCRYPTION_KEY:
12715 			case COLUMN_SET:
12716 			case COMPRESSION_DELAY:
12717 			case DATABASE_DEAULT:
12718 			case DATA_COMPRESSION:
12719 			case DATA_CONSISTENCY_CHECK:
12720 			case ENCRYPTION_TYPE:
12721 			case SYSTEM_TIME:
12722 			case SYSTEM_VERSIONING:
12723 			case TEXTIMAGE_ON:
12724 			case WAIT_AT_LOW_PRIORITY:
12725 			case STATISTICS_INCREMENTAL:
12726 			case STATISTICS_NORECOMPUTE:
12727 			case ROUND_ROBIN:
12728 			case SCHEMA_AND_DATA:
12729 			case SCHEMA_ONLY:
12730 			case SORT_IN_TEMPDB:
12731 			case IGNORE_DUP_KEY:
12732 			case IMPLICIT_TRANSACTIONS:
12733 			case MAX_DURATION:
12734 			case MEMORY_OPTIMIZED:
12735 			case MIGRATION_STATE:
12736 			case PAD_INDEX:
12737 			case REMOTE_DATA_ARCHIVE:
12738 			case FILESTREAM_ON:
12739 			case FILETABLE_COLLATE_FILENAME:
12740 			case FILETABLE_DIRECTORY:
12741 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
12742 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
12743 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
12744 			case FILTER_PREDICATE:
12745 			case HISTORY_RETENTION_PERIOD:
12746 			case HISTORY_TABLE:
12747 			case LOCK_ESCALATION:
12748 			case DROP_EXISTING:
12749 			case ROW_NUMBER:
12750 			case FIRST:
12751 			case DATETIME2:
12752 			case OUTPUT:
12753 			case INSERTED:
12754 			case DELETED:
12755 			case FILENAME:
12756 			case SIZE:
12757 			case MAXSIZE:
12758 			case FILEGROWTH:
12759 			case UNLIMITED:
12760 			case KB:
12761 			case MB:
12762 			case GB:
12763 			case TB:
12764 			case CONTAINS:
12765 			case MEMORY_OPTIMIZED_DATA:
12766 			case FILEGROUP:
12767 			case NON_TRANSACTED_ACCESS:
12768 			case DB_CHAINING:
12769 			case TRUSTWORTHY:
12770 			case FORWARD_ONLY:
12771 			case KEYSET:
12772 			case FAST_FORWARD:
12773 			case SCROLL_LOCKS:
12774 			case OPTIMISTIC:
12775 			case TYPE_WARNING:
12776 			case SCHEMABINDING:
12777 			case CALLER:
12778 			case OWNER:
12779 			case SNAPSHOT:
12780 			case REPEATABLE:
12781 			case SERIALIZABLE:
12782 			case NATIVE_COMPILATION:
12783 			case VIEW_METADATA:
12784 			case INSTEAD:
12785 			case APPEND:
12786 			case INCREMENT:
12787 			case CACHE:
12788 			case MINVALUE:
12789 			case MAXVALUE:
12790 			case RESTART:
12791 			case LOB_COMPACTION:
12792 			case COMPRESS_ALL_ROW_GROUPS:
12793 			case REORGANIZE:
12794 			case RESUME:
12795 			case PAUSE:
12796 			case ABORT:
12797 			case ACCELERATED_DATABASE_RECOVERY:
12798 			case PERSISTENT_VERSION_STORE_FILEGROUP:
12799 			case IMMEDIATE:
12800 			case NO_WAIT:
12801 			case TARGET_RECOVERY_TIME:
12802 			case SECONDS:
12803 			case HONOR_BROKER_PRIORITY:
12804 			case ERROR_BROKER_CONVERSATIONS:
12805 			case NEW_BROKER:
12806 			case DISABLE_BROKER:
12807 			case ENABLE_BROKER:
12808 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
12809 			case READ_COMMITTED_SNAPSHOT:
12810 			case ALLOW_SNAPSHOT_ISOLATION:
12811 			case RECURSIVE_TRIGGERS:
12812 			case QUOTED_IDENTIFIER:
12813 			case NUMERIC_ROUNDABORT:
12814 			case CONCAT_NULL_YIELDS_NULL:
12815 			case COMPATIBILITY_LEVEL:
12816 			case ARITHABORT:
12817 			case ANSI_WARNINGS:
12818 			case ANSI_PADDING:
12819 			case ANSI_NULLS:
12820 			case ANSI_NULL_DEFAULT:
12821 			case PAGE_VERIFY:
12822 			case CHECKSUM:
12823 			case TORN_PAGE_DETECTION:
12824 			case BULK_LOGGED:
12825 			case RECOVERY:
12826 			case TOTAL_EXECUTION_CPU_TIME_MS:
12827 			case TOTAL_COMPILE_CPU_TIME_MS:
12828 			case STALE_CAPTURE_POLICY_THRESHOLD:
12829 			case EXECUTION_COUNT:
12830 			case QUERY_CAPTURE_POLICY:
12831 			case WAIT_STATS_CAPTURE_MODE:
12832 			case MAX_PLANS_PER_QUERY:
12833 			case QUERY_CAPTURE_MODE:
12834 			case SIZE_BASED_CLEANUP_MODE:
12835 			case INTERVAL_LENGTH_MINUTES:
12836 			case MAX_STORAGE_SIZE_MB:
12837 			case DATA_FLUSH_INTERVAL_SECONDS:
12838 			case CLEANUP_POLICY:
12839 			case CUSTOM:
12840 			case STALE_QUERY_THRESHOLD_DAYS:
12841 			case OPERATION_MODE:
12842 			case QUERY_STORE:
12843 			case CURSOR_DEFAULT:
12844 			case GLOBAL:
12845 			case CURSOR_CLOSE_ON_COMMIT:
12846 			case HOURS:
12847 			case CHANGE_RETENTION:
12848 			case AUTO_CLEANUP:
12849 			case CHANGE_TRACKING:
12850 			case AUTOMATIC_TUNING:
12851 			case FORCE_LAST_GOOD_PLAN:
12852 			case AUTO_UPDATE_STATISTICS_ASYNC:
12853 			case AUTO_UPDATE_STATISTICS:
12854 			case AUTO_SHRINK:
12855 			case AUTO_CREATE_STATISTICS:
12856 			case INCREMENTAL:
12857 			case AUTO_CLOSE:
12858 			case DATA_RETENTION:
12859 			case TEMPORAL_HISTORY_RETENTION:
12860 			case EDITION:
12861 			case MIXED_PAGE_ALLOCATION:
12862 			case DISABLED:
12863 			case ALLOWED:
12864 			case HADR:
12865 			case MULTI_USER:
12866 			case RESTRICTED_USER:
12867 			case SINGLE_USER:
12868 			case OFFLINE:
12869 			case EMERGENCY:
12870 			case SUSPEND:
12871 			case DATE_CORRELATION_OPTIMIZATION:
12872 			case ELASTIC_POOL:
12873 			case SERVICE_OBJECTIVE:
12874 			case DATABASE_NAME:
12875 			case ALLOW_CONNECTIONS:
12876 			case GEO:
12877 			case NAMED:
12878 			case DATEFIRST:
12879 			case BACKUP_STORAGE_REDUNDANCY:
12880 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
12881 			case SECONDARY:
12882 			case FAILOVER:
12883 			case DEFAULT_FULLTEXT_LANGUAGE:
12884 			case DEFAULT_LANGUAGE:
12885 			case INLINE:
12886 			case NESTED_TRIGGERS:
12887 			case TRANSFORM_NOISE_WORDS:
12888 			case TWO_DIGIT_YEAR_CUTOFF:
12889 			case PERSISTENT_LOG_BUFFER:
12890 			case DIRECTORY_NAME:
12891 			case DATEFORMAT:
12892 			case DELAYED_DURABILITY:
12893 			case AUTHORIZATION:
12894 			case TRANSFER:
12895 			case PROVIDER:
12896 			case SEARCH:
12897 			case MEMBER:
12898 			case IDENTIFIER_:
12899 			case DELIMITED_IDENTIFIER_:
12900 				{
12901 				setState(2097);
12902 				indexName();
12903 				}
12904 				break;
12905 			case ALL:
12906 				{
12907 				setState(2098);
12908 				match(ALL);
12909 				}
12910 				break;
12911 			default:
12912 				throw new NoViableAltException(this);
12913 			}
12914 			setState(2101);
12915 			match(ON);
12916 			setState(2102);
12917 			tableName();
12918 			setState(2103);
12919 			alterIndexClause();
12920 			}
12921 		}
12922 		catch (RecognitionException re) {
12923 			_localctx.exception = re;
12924 			_errHandler.reportError(this, re);
12925 			_errHandler.recover(this, re);
12926 		}
12927 		finally {
12928 			exitRule();
12929 		}
12930 		return _localctx;
12931 	}
12932 
12933 	public static class AlterDatabaseContext extends ParserRuleContext {
12934 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12935 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
12936 		public DatabaseNameContext databaseName() {
12937 			return getRuleContext(DatabaseNameContext.class,0);
12938 		}
12939 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
12940 		public List<AlterDatabaseClauseContext> alterDatabaseClause() {
12941 			return getRuleContexts(AlterDatabaseClauseContext.class);
12942 		}
12943 		public AlterDatabaseClauseContext alterDatabaseClause(int i) {
12944 			return getRuleContext(AlterDatabaseClauseContext.class,i);
12945 		}
12946 		public AlterDatabaseContext(ParserRuleContext parent, int invokingState) {
12947 			super(parent, invokingState);
12948 		}
12949 		@Override public int getRuleIndex() { return RULE_alterDatabase; }
12950 		@Override
12951 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12952 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabase(this);
12953 			else return visitor.visitChildren(this);
12954 		}
12955 	}
12956 
12957 	public final AlterDatabaseContext alterDatabase() throws RecognitionException {
12958 		AlterDatabaseContext _localctx = new AlterDatabaseContext(_ctx, getState());
12959 		enterRule(_localctx, 268, RULE_alterDatabase);
12960 		int _la;
12961 		try {
12962 			enterOuterAlt(_localctx, 1);
12963 			{
12964 			setState(2105);
12965 			match(ALTER);
12966 			setState(2106);
12967 			match(DATABASE);
12968 			setState(2109);
12969 			_errHandler.sync(this);
12970 			switch (_input.LA(1)) {
12971 			case TRUNCATE:
12972 			case SCHEMA:
12973 			case COLUMNS:
12974 			case PRECISION:
12975 			case FUNCTION:
12976 			case TRIGGER:
12977 			case CAST:
12978 			case SUBSTRING:
12979 			case OFF:
12980 			case GROUP:
12981 			case LIMIT:
12982 			case OFFSET:
12983 			case SAVEPOINT:
12984 			case BOOLEAN:
12985 			case ARRAY:
12986 			case DATE:
12987 			case LOCALTIME:
12988 			case LOCALTIMESTAMP:
12989 			case QUARTER:
12990 			case MONTH:
12991 			case WEEK:
12992 			case DAY:
12993 			case SECOND:
12994 			case MICROSECOND:
12995 			case MAX:
12996 			case MIN:
12997 			case SUM:
12998 			case COUNT:
12999 			case AVG:
13000 			case ENABLE:
13001 			case DISABLE:
13002 			case INSTANCE:
13003 			case DO:
13004 			case DEFINER:
13005 			case SQL:
13006 			case CASCADED:
13007 			case LOCAL:
13008 			case NEXT:
13009 			case NAME:
13010 			case INTEGER:
13011 			case TYPE:
13012 			case TEXT:
13013 			case VIEWS:
13014 			case READ_ONLY:
13015 			case DATABASE:
13016 			case RETURNS:
13017 			case DATEPART:
13018 			case PASSWORD:
13019 			case BINARY:
13020 			case HIDDEN_:
13021 			case MOD:
13022 			case PARTITION:
13023 			case PARTITIONS:
13024 			case TOP:
13025 			case ROW:
13026 			case ROWS:
13027 			case XOR:
13028 			case ALWAYS:
13029 			case ROLE:
13030 			case START:
13031 			case ALGORITHM:
13032 			case AUTO:
13033 			case BLOCKERS:
13034 			case CLUSTERED:
13035 			case NONCLUSTERED:
13036 			case COLUMNSTORE:
13037 			case CONTENT:
13038 			case YEARS:
13039 			case MONTHS:
13040 			case WEEKS:
13041 			case DAYS:
13042 			case MINUTES:
13043 			case DENY:
13044 			case DETERMINISTIC:
13045 			case DISTRIBUTION:
13046 			case DOCUMENT:
13047 			case DURABILITY:
13048 			case ENCRYPTED:
13049 			case FILESTREAM:
13050 			case FILETABLE:
13051 			case FILLFACTOR:
13052 			case FOLLOWING:
13053 			case HASH:
13054 			case HEAP:
13055 			case INBOUND:
13056 			case OUTBOUND:
13057 			case UNBOUNDED:
13058 			case INFINITE:
13059 			case LOGIN:
13060 			case MASKED:
13061 			case MAXDOP:
13062 			case MOVE:
13063 			case NOCHECK:
13064 			case OBJECT:
13065 			case ONLINE:
13066 			case OVER:
13067 			case PAGE:
13068 			case PAUSED:
13069 			case PERIOD:
13070 			case PERSISTED:
13071 			case PRECEDING:
13072 			case RANDOMIZED:
13073 			case RANGE:
13074 			case REBUILD:
13075 			case REPLICATE:
13076 			case REPLICATION:
13077 			case RESUMABLE:
13078 			case ROWGUIDCOL:
13079 			case SAVE:
13080 			case SELF:
13081 			case SPARSE:
13082 			case SWITCH:
13083 			case TRAN:
13084 			case TRANCOUNT:
13085 			case CONTROL:
13086 			case CONCAT:
13087 			case TAKE:
13088 			case OWNERSHIP:
13089 			case DEFINITION:
13090 			case APPLICATION:
13091 			case ASSEMBLY:
13092 			case SYMMETRIC:
13093 			case ASYMMETRIC:
13094 			case SERVER:
13095 			case RECEIVE:
13096 			case CHANGE:
13097 			case TRACE:
13098 			case TRACKING:
13099 			case RESOURCES:
13100 			case SETTINGS:
13101 			case STATE:
13102 			case AVAILABILITY:
13103 			case CREDENTIAL:
13104 			case ENDPOINT:
13105 			case EVENT:
13106 			case NOTIFICATION:
13107 			case LINKED:
13108 			case AUDIT:
13109 			case DDL:
13110 			case XML:
13111 			case IMPERSONATE:
13112 			case SECURABLES:
13113 			case AUTHENTICATE:
13114 			case EXTERNAL:
13115 			case ACCESS:
13116 			case ADMINISTER:
13117 			case BULK:
13118 			case OPERATIONS:
13119 			case UNSAFE:
13120 			case SHUTDOWN:
13121 			case SCOPED:
13122 			case CONFIGURATION:
13123 			case DATASPACE:
13124 			case SERVICE:
13125 			case CERTIFICATE:
13126 			case CONTRACT:
13127 			case ENCRYPTION:
13128 			case MASTER:
13129 			case DATA:
13130 			case SOURCE:
13131 			case FILE:
13132 			case FORMAT:
13133 			case LIBRARY:
13134 			case FULLTEXT:
13135 			case MASK:
13136 			case UNMASK:
13137 			case MESSAGE:
13138 			case REMOTE:
13139 			case BINDING:
13140 			case ROUTE:
13141 			case SECURITY:
13142 			case POLICY:
13143 			case AGGREGATE:
13144 			case QUEUE:
13145 			case RULE:
13146 			case SYNONYM:
13147 			case COLLECTION:
13148 			case SCRIPT:
13149 			case KILL:
13150 			case BACKUP:
13151 			case LOG:
13152 			case SHOWPLAN:
13153 			case SUBSCRIBE:
13154 			case QUERY:
13155 			case NOTIFICATIONS:
13156 			case CHECKPOINT:
13157 			case SEQUENCE:
13158 			case ABORT_AFTER_WAIT:
13159 			case ALLOW_PAGE_LOCKS:
13160 			case ALLOW_ROW_LOCKS:
13161 			case ALL_SPARSE_COLUMNS:
13162 			case BUCKET_COUNT:
13163 			case COLUMNSTORE_ARCHIVE:
13164 			case COLUMN_ENCRYPTION_KEY:
13165 			case COLUMN_SET:
13166 			case COMPRESSION_DELAY:
13167 			case DATABASE_DEAULT:
13168 			case DATA_COMPRESSION:
13169 			case DATA_CONSISTENCY_CHECK:
13170 			case ENCRYPTION_TYPE:
13171 			case SYSTEM_TIME:
13172 			case SYSTEM_VERSIONING:
13173 			case TEXTIMAGE_ON:
13174 			case WAIT_AT_LOW_PRIORITY:
13175 			case STATISTICS_INCREMENTAL:
13176 			case STATISTICS_NORECOMPUTE:
13177 			case ROUND_ROBIN:
13178 			case SCHEMA_AND_DATA:
13179 			case SCHEMA_ONLY:
13180 			case SORT_IN_TEMPDB:
13181 			case IGNORE_DUP_KEY:
13182 			case IMPLICIT_TRANSACTIONS:
13183 			case MAX_DURATION:
13184 			case MEMORY_OPTIMIZED:
13185 			case MIGRATION_STATE:
13186 			case PAD_INDEX:
13187 			case REMOTE_DATA_ARCHIVE:
13188 			case FILESTREAM_ON:
13189 			case FILETABLE_COLLATE_FILENAME:
13190 			case FILETABLE_DIRECTORY:
13191 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
13192 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
13193 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
13194 			case FILTER_PREDICATE:
13195 			case HISTORY_RETENTION_PERIOD:
13196 			case HISTORY_TABLE:
13197 			case LOCK_ESCALATION:
13198 			case DROP_EXISTING:
13199 			case ROW_NUMBER:
13200 			case FIRST:
13201 			case DATETIME2:
13202 			case OUTPUT:
13203 			case INSERTED:
13204 			case DELETED:
13205 			case FILENAME:
13206 			case SIZE:
13207 			case MAXSIZE:
13208 			case FILEGROWTH:
13209 			case UNLIMITED:
13210 			case KB:
13211 			case MB:
13212 			case GB:
13213 			case TB:
13214 			case CONTAINS:
13215 			case MEMORY_OPTIMIZED_DATA:
13216 			case FILEGROUP:
13217 			case NON_TRANSACTED_ACCESS:
13218 			case DB_CHAINING:
13219 			case TRUSTWORTHY:
13220 			case FORWARD_ONLY:
13221 			case KEYSET:
13222 			case FAST_FORWARD:
13223 			case SCROLL_LOCKS:
13224 			case OPTIMISTIC:
13225 			case TYPE_WARNING:
13226 			case SCHEMABINDING:
13227 			case CALLER:
13228 			case OWNER:
13229 			case SNAPSHOT:
13230 			case REPEATABLE:
13231 			case SERIALIZABLE:
13232 			case NATIVE_COMPILATION:
13233 			case VIEW_METADATA:
13234 			case INSTEAD:
13235 			case APPEND:
13236 			case INCREMENT:
13237 			case CACHE:
13238 			case MINVALUE:
13239 			case MAXVALUE:
13240 			case RESTART:
13241 			case LOB_COMPACTION:
13242 			case COMPRESS_ALL_ROW_GROUPS:
13243 			case REORGANIZE:
13244 			case RESUME:
13245 			case PAUSE:
13246 			case ABORT:
13247 			case ACCELERATED_DATABASE_RECOVERY:
13248 			case PERSISTENT_VERSION_STORE_FILEGROUP:
13249 			case IMMEDIATE:
13250 			case NO_WAIT:
13251 			case TARGET_RECOVERY_TIME:
13252 			case SECONDS:
13253 			case HONOR_BROKER_PRIORITY:
13254 			case ERROR_BROKER_CONVERSATIONS:
13255 			case NEW_BROKER:
13256 			case DISABLE_BROKER:
13257 			case ENABLE_BROKER:
13258 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
13259 			case READ_COMMITTED_SNAPSHOT:
13260 			case ALLOW_SNAPSHOT_ISOLATION:
13261 			case RECURSIVE_TRIGGERS:
13262 			case QUOTED_IDENTIFIER:
13263 			case NUMERIC_ROUNDABORT:
13264 			case CONCAT_NULL_YIELDS_NULL:
13265 			case COMPATIBILITY_LEVEL:
13266 			case ARITHABORT:
13267 			case ANSI_WARNINGS:
13268 			case ANSI_PADDING:
13269 			case ANSI_NULLS:
13270 			case ANSI_NULL_DEFAULT:
13271 			case PAGE_VERIFY:
13272 			case CHECKSUM:
13273 			case TORN_PAGE_DETECTION:
13274 			case BULK_LOGGED:
13275 			case RECOVERY:
13276 			case TOTAL_EXECUTION_CPU_TIME_MS:
13277 			case TOTAL_COMPILE_CPU_TIME_MS:
13278 			case STALE_CAPTURE_POLICY_THRESHOLD:
13279 			case EXECUTION_COUNT:
13280 			case QUERY_CAPTURE_POLICY:
13281 			case WAIT_STATS_CAPTURE_MODE:
13282 			case MAX_PLANS_PER_QUERY:
13283 			case QUERY_CAPTURE_MODE:
13284 			case SIZE_BASED_CLEANUP_MODE:
13285 			case INTERVAL_LENGTH_MINUTES:
13286 			case MAX_STORAGE_SIZE_MB:
13287 			case DATA_FLUSH_INTERVAL_SECONDS:
13288 			case CLEANUP_POLICY:
13289 			case CUSTOM:
13290 			case STALE_QUERY_THRESHOLD_DAYS:
13291 			case OPERATION_MODE:
13292 			case QUERY_STORE:
13293 			case CURSOR_DEFAULT:
13294 			case GLOBAL:
13295 			case CURSOR_CLOSE_ON_COMMIT:
13296 			case HOURS:
13297 			case CHANGE_RETENTION:
13298 			case AUTO_CLEANUP:
13299 			case CHANGE_TRACKING:
13300 			case AUTOMATIC_TUNING:
13301 			case FORCE_LAST_GOOD_PLAN:
13302 			case AUTO_UPDATE_STATISTICS_ASYNC:
13303 			case AUTO_UPDATE_STATISTICS:
13304 			case AUTO_SHRINK:
13305 			case AUTO_CREATE_STATISTICS:
13306 			case INCREMENTAL:
13307 			case AUTO_CLOSE:
13308 			case DATA_RETENTION:
13309 			case TEMPORAL_HISTORY_RETENTION:
13310 			case EDITION:
13311 			case MIXED_PAGE_ALLOCATION:
13312 			case DISABLED:
13313 			case ALLOWED:
13314 			case HADR:
13315 			case MULTI_USER:
13316 			case RESTRICTED_USER:
13317 			case SINGLE_USER:
13318 			case OFFLINE:
13319 			case EMERGENCY:
13320 			case SUSPEND:
13321 			case DATE_CORRELATION_OPTIMIZATION:
13322 			case ELASTIC_POOL:
13323 			case SERVICE_OBJECTIVE:
13324 			case DATABASE_NAME:
13325 			case ALLOW_CONNECTIONS:
13326 			case GEO:
13327 			case NAMED:
13328 			case DATEFIRST:
13329 			case BACKUP_STORAGE_REDUNDANCY:
13330 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
13331 			case SECONDARY:
13332 			case FAILOVER:
13333 			case DEFAULT_FULLTEXT_LANGUAGE:
13334 			case DEFAULT_LANGUAGE:
13335 			case INLINE:
13336 			case NESTED_TRIGGERS:
13337 			case TRANSFORM_NOISE_WORDS:
13338 			case TWO_DIGIT_YEAR_CUTOFF:
13339 			case PERSISTENT_LOG_BUFFER:
13340 			case DIRECTORY_NAME:
13341 			case DATEFORMAT:
13342 			case DELAYED_DURABILITY:
13343 			case AUTHORIZATION:
13344 			case TRANSFER:
13345 			case PROVIDER:
13346 			case SEARCH:
13347 			case MEMBER:
13348 			case IDENTIFIER_:
13349 			case DELIMITED_IDENTIFIER_:
13350 				{
13351 				setState(2107);
13352 				databaseName();
13353 				}
13354 				break;
13355 			case CURRENT:
13356 				{
13357 				setState(2108);
13358 				match(CURRENT);
13359 				}
13360 				break;
13361 			default:
13362 				throw new NoViableAltException(this);
13363 			}
13364 			setState(2114);
13365 			_errHandler.sync(this);
13366 			_la = _input.LA(1);
13367 			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LP_) | (1L << ADD) | (1L << SET))) != 0) || ((((_la - 154)) & ~0x3f) == 0 && ((1L << (_la - 154)) & ((1L << (DEFAULT - 154)) | (1L << (NAME - 154)) | (1L << (READ_ONLY - 154)) | (1L << (READONLY - 154)))) != 0) || _la==COLLATE || ((((_la - 557)) & ~0x3f) == 0 && ((1L << (_la - 557)) & ((1L << (REMOVE - 557)) | (1L << (AUTOGROW_SINGLE_FILE - 557)) | (1L << (AUTOGROW_ALL_FILES - 557)) | (1L << (READWRITE - 557)) | (1L << (READ_WRITE - 557)) | (1L << (MODIFY - 557)))) != 0) || _la==FORCE_FAILOVER_ALLOW_DATA_LOSS || _la==FAILOVER) {
13368 				{
13369 				{
13370 				setState(2111);
13371 				alterDatabaseClause();
13372 				}
13373 				}
13374 				setState(2116);
13375 				_errHandler.sync(this);
13376 				_la = _input.LA(1);
13377 			}
13378 			}
13379 		}
13380 		catch (RecognitionException re) {
13381 			_localctx.exception = re;
13382 			_errHandler.reportError(this, re);
13383 			_errHandler.recover(this, re);
13384 		}
13385 		finally {
13386 			exitRule();
13387 		}
13388 		return _localctx;
13389 	}
13390 
13391 	public static class AlterProcedureContext extends ParserRuleContext {
13392 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13393 		public ProcedureNameContext procedureName() {
13394 			return getRuleContext(ProcedureNameContext.class,0);
13395 		}
13396 		public ProcParametersContext procParameters() {
13397 			return getRuleContext(ProcParametersContext.class,0);
13398 		}
13399 		public CreateOrAlterProcClauseContext createOrAlterProcClause() {
13400 			return getRuleContext(CreateOrAlterProcClauseContext.class,0);
13401 		}
13402 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
13403 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
13404 		public AlterProcedureContext(ParserRuleContext parent, int invokingState) {
13405 			super(parent, invokingState);
13406 		}
13407 		@Override public int getRuleIndex() { return RULE_alterProcedure; }
13408 		@Override
13409 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13410 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterProcedure(this);
13411 			else return visitor.visitChildren(this);
13412 		}
13413 	}
13414 
13415 	public final AlterProcedureContext alterProcedure() throws RecognitionException {
13416 		AlterProcedureContext _localctx = new AlterProcedureContext(_ctx, getState());
13417 		enterRule(_localctx, 270, RULE_alterProcedure);
13418 		int _la;
13419 		try {
13420 			enterOuterAlt(_localctx, 1);
13421 			{
13422 			setState(2117);
13423 			match(ALTER);
13424 			setState(2118);
13425 			_la = _input.LA(1);
13426 			if ( !(_la==PROCEDURE || _la==PROC) ) {
13427 			_errHandler.recoverInline(this);
13428 			}
13429 			else {
13430 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
13431 				_errHandler.reportMatch(this);
13432 				consume();
13433 			}
13434 			setState(2119);
13435 			procedureName();
13436 			setState(2120);
13437 			procParameters();
13438 			setState(2121);
13439 			createOrAlterProcClause();
13440 			}
13441 		}
13442 		catch (RecognitionException re) {
13443 			_localctx.exception = re;
13444 			_errHandler.reportError(this, re);
13445 			_errHandler.recover(this, re);
13446 		}
13447 		finally {
13448 			exitRule();
13449 		}
13450 		return _localctx;
13451 	}
13452 
13453 	public static class AlterFunctionContext extends ParserRuleContext {
13454 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13455 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
13456 		public FunctionNameContext functionName() {
13457 			return getRuleContext(FunctionNameContext.class,0);
13458 		}
13459 		public FuncParametersContext funcParameters() {
13460 			return getRuleContext(FuncParametersContext.class,0);
13461 		}
13462 		public FuncReturnsContext funcReturns() {
13463 			return getRuleContext(FuncReturnsContext.class,0);
13464 		}
13465 		public AlterFunctionContext(ParserRuleContext parent, int invokingState) {
13466 			super(parent, invokingState);
13467 		}
13468 		@Override public int getRuleIndex() { return RULE_alterFunction; }
13469 		@Override
13470 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13471 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterFunction(this);
13472 			else return visitor.visitChildren(this);
13473 		}
13474 	}
13475 
13476 	public final AlterFunctionContext alterFunction() throws RecognitionException {
13477 		AlterFunctionContext _localctx = new AlterFunctionContext(_ctx, getState());
13478 		enterRule(_localctx, 272, RULE_alterFunction);
13479 		try {
13480 			enterOuterAlt(_localctx, 1);
13481 			{
13482 			setState(2123);
13483 			match(ALTER);
13484 			setState(2124);
13485 			match(FUNCTION);
13486 			setState(2125);
13487 			functionName();
13488 			setState(2126);
13489 			funcParameters();
13490 			setState(2127);
13491 			funcReturns();
13492 			}
13493 		}
13494 		catch (RecognitionException re) {
13495 			_localctx.exception = re;
13496 			_errHandler.reportError(this, re);
13497 			_errHandler.recover(this, re);
13498 		}
13499 		finally {
13500 			exitRule();
13501 		}
13502 		return _localctx;
13503 	}
13504 
13505 	public static class AlterViewContext extends ParserRuleContext {
13506 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13507 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
13508 		public ViewNameContext viewName() {
13509 			return getRuleContext(ViewNameContext.class,0);
13510 		}
13511 		public CreateOrAlterViewClauseContext createOrAlterViewClause() {
13512 			return getRuleContext(CreateOrAlterViewClauseContext.class,0);
13513 		}
13514 		public AlterViewContext(ParserRuleContext parent, int invokingState) {
13515 			super(parent, invokingState);
13516 		}
13517 		@Override public int getRuleIndex() { return RULE_alterView; }
13518 		@Override
13519 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13520 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterView(this);
13521 			else return visitor.visitChildren(this);
13522 		}
13523 	}
13524 
13525 	public final AlterViewContext alterView() throws RecognitionException {
13526 		AlterViewContext _localctx = new AlterViewContext(_ctx, getState());
13527 		enterRule(_localctx, 274, RULE_alterView);
13528 		try {
13529 			enterOuterAlt(_localctx, 1);
13530 			{
13531 			setState(2129);
13532 			match(ALTER);
13533 			setState(2130);
13534 			match(VIEW);
13535 			setState(2131);
13536 			viewName();
13537 			setState(2132);
13538 			createOrAlterViewClause();
13539 			}
13540 		}
13541 		catch (RecognitionException re) {
13542 			_localctx.exception = re;
13543 			_errHandler.reportError(this, re);
13544 			_errHandler.recover(this, re);
13545 		}
13546 		finally {
13547 			exitRule();
13548 		}
13549 		return _localctx;
13550 	}
13551 
13552 	public static class AlterTriggerContext extends ParserRuleContext {
13553 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13554 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
13555 		public TriggerNameContext triggerName() {
13556 			return getRuleContext(TriggerNameContext.class,0);
13557 		}
13558 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13559 		public TriggerTargetContext triggerTarget() {
13560 			return getRuleContext(TriggerTargetContext.class,0);
13561 		}
13562 		public CreateTriggerClauseContext createTriggerClause() {
13563 			return getRuleContext(CreateTriggerClauseContext.class,0);
13564 		}
13565 		public AlterTriggerContext(ParserRuleContext parent, int invokingState) {
13566 			super(parent, invokingState);
13567 		}
13568 		@Override public int getRuleIndex() { return RULE_alterTrigger; }
13569 		@Override
13570 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13571 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTrigger(this);
13572 			else return visitor.visitChildren(this);
13573 		}
13574 	}
13575 
13576 	public final AlterTriggerContext alterTrigger() throws RecognitionException {
13577 		AlterTriggerContext _localctx = new AlterTriggerContext(_ctx, getState());
13578 		enterRule(_localctx, 276, RULE_alterTrigger);
13579 		try {
13580 			enterOuterAlt(_localctx, 1);
13581 			{
13582 			setState(2134);
13583 			match(ALTER);
13584 			setState(2135);
13585 			match(TRIGGER);
13586 			setState(2136);
13587 			triggerName();
13588 			setState(2137);
13589 			match(ON);
13590 			setState(2138);
13591 			triggerTarget();
13592 			setState(2139);
13593 			createTriggerClause();
13594 			}
13595 		}
13596 		catch (RecognitionException re) {
13597 			_localctx.exception = re;
13598 			_errHandler.reportError(this, re);
13599 			_errHandler.recover(this, re);
13600 		}
13601 		finally {
13602 			exitRule();
13603 		}
13604 		return _localctx;
13605 	}
13606 
13607 	public static class AlterSequenceContext extends ParserRuleContext {
13608 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13609 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
13610 		public SequenceNameContext sequenceName() {
13611 			return getRuleContext(SequenceNameContext.class,0);
13612 		}
13613 		public List<CreateOrAlterSequenceClauseContext> createOrAlterSequenceClause() {
13614 			return getRuleContexts(CreateOrAlterSequenceClauseContext.class);
13615 		}
13616 		public CreateOrAlterSequenceClauseContext createOrAlterSequenceClause(int i) {
13617 			return getRuleContext(CreateOrAlterSequenceClauseContext.class,i);
13618 		}
13619 		public AlterSequenceContext(ParserRuleContext parent, int invokingState) {
13620 			super(parent, invokingState);
13621 		}
13622 		@Override public int getRuleIndex() { return RULE_alterSequence; }
13623 		@Override
13624 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13625 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSequence(this);
13626 			else return visitor.visitChildren(this);
13627 		}
13628 	}
13629 
13630 	public final AlterSequenceContext alterSequence() throws RecognitionException {
13631 		AlterSequenceContext _localctx = new AlterSequenceContext(_ctx, getState());
13632 		enterRule(_localctx, 278, RULE_alterSequence);
13633 		int _la;
13634 		try {
13635 			enterOuterAlt(_localctx, 1);
13636 			{
13637 			setState(2141);
13638 			match(ALTER);
13639 			setState(2142);
13640 			match(SEQUENCE);
13641 			setState(2143);
13642 			sequenceName();
13643 			setState(2147);
13644 			_errHandler.sync(this);
13645 			_la = _input.LA(1);
13646 			while (_la==AS || _la==NO || _la==START || ((((_la - 541)) & ~0x3f) == 0 && ((1L << (_la - 541)) & ((1L << (INCREMENT - 541)) | (1L << (CYCLE - 541)) | (1L << (CACHE - 541)) | (1L << (MINVALUE - 541)) | (1L << (MAXVALUE - 541)) | (1L << (RESTART - 541)))) != 0)) {
13647 				{
13648 				{
13649 				setState(2144);
13650 				createOrAlterSequenceClause();
13651 				}
13652 				}
13653 				setState(2149);
13654 				_errHandler.sync(this);
13655 				_la = _input.LA(1);
13656 			}
13657 			}
13658 		}
13659 		catch (RecognitionException re) {
13660 			_localctx.exception = re;
13661 			_errHandler.reportError(this, re);
13662 			_errHandler.recover(this, re);
13663 		}
13664 		finally {
13665 			exitRule();
13666 		}
13667 		return _localctx;
13668 	}
13669 
13670 	public static class AlterServiceContext extends ParserRuleContext {
13671 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13672 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
13673 		public ServiceNameContext serviceName() {
13674 			return getRuleContext(ServiceNameContext.class,0);
13675 		}
13676 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13677 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
13678 		public QueueNameContext queueName() {
13679 			return getRuleContext(QueueNameContext.class,0);
13680 		}
13681 		public AlterServiceClauseContext alterServiceClause() {
13682 			return getRuleContext(AlterServiceClauseContext.class,0);
13683 		}
13684 		public AlterServiceContext(ParserRuleContext parent, int invokingState) {
13685 			super(parent, invokingState);
13686 		}
13687 		@Override public int getRuleIndex() { return RULE_alterService; }
13688 		@Override
13689 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13690 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterService(this);
13691 			else return visitor.visitChildren(this);
13692 		}
13693 	}
13694 
13695 	public final AlterServiceContext alterService() throws RecognitionException {
13696 		AlterServiceContext _localctx = new AlterServiceContext(_ctx, getState());
13697 		enterRule(_localctx, 280, RULE_alterService);
13698 		int _la;
13699 		try {
13700 			enterOuterAlt(_localctx, 1);
13701 			{
13702 			setState(2150);
13703 			match(ALTER);
13704 			setState(2151);
13705 			match(SERVICE);
13706 			setState(2152);
13707 			serviceName();
13708 			setState(2156);
13709 			_errHandler.sync(this);
13710 			_la = _input.LA(1);
13711 			if (_la==ON) {
13712 				{
13713 				setState(2153);
13714 				match(ON);
13715 				setState(2154);
13716 				match(QUEUE);
13717 				setState(2155);
13718 				queueName();
13719 				}
13720 			}
13721 
13722 			setState(2159);
13723 			_errHandler.sync(this);
13724 			_la = _input.LA(1);
13725 			if (_la==LP_) {
13726 				{
13727 				setState(2158);
13728 				alterServiceClause();
13729 				}
13730 			}
13731 
13732 			}
13733 		}
13734 		catch (RecognitionException re) {
13735 			_localctx.exception = re;
13736 			_errHandler.reportError(this, re);
13737 			_errHandler.recover(this, re);
13738 		}
13739 		finally {
13740 			exitRule();
13741 		}
13742 		return _localctx;
13743 	}
13744 
13745 	public static class AlterSchemaContext extends ParserRuleContext {
13746 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13747 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
13748 		public SchemaNameContext schemaName() {
13749 			return getRuleContext(SchemaNameContext.class,0);
13750 		}
13751 		public TerminalNode TRANSFER() { return getToken(SQLServerStatementParser.TRANSFER, 0); }
13752 		public IgnoredIdentifierContext ignoredIdentifier() {
13753 			return getRuleContext(IgnoredIdentifierContext.class,0);
13754 		}
13755 		public Class_Context class_() {
13756 			return getRuleContext(Class_Context.class,0);
13757 		}
13758 		public AlterSchemaContext(ParserRuleContext parent, int invokingState) {
13759 			super(parent, invokingState);
13760 		}
13761 		@Override public int getRuleIndex() { return RULE_alterSchema; }
13762 		@Override
13763 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13764 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSchema(this);
13765 			else return visitor.visitChildren(this);
13766 		}
13767 	}
13768 
13769 	public final AlterSchemaContext alterSchema() throws RecognitionException {
13770 		AlterSchemaContext _localctx = new AlterSchemaContext(_ctx, getState());
13771 		enterRule(_localctx, 282, RULE_alterSchema);
13772 		try {
13773 			enterOuterAlt(_localctx, 1);
13774 			{
13775 			setState(2161);
13776 			match(ALTER);
13777 			setState(2162);
13778 			match(SCHEMA);
13779 			setState(2163);
13780 			schemaName();
13781 			setState(2164);
13782 			match(TRANSFER);
13783 			setState(2166);
13784 			_errHandler.sync(this);
13785 			switch ( getInterpreter().adaptivePredict(_input,136,_ctx) ) {
13786 			case 1:
13787 				{
13788 				setState(2165);
13789 				class_();
13790 				}
13791 				break;
13792 			}
13793 			setState(2168);
13794 			ignoredIdentifier();
13795 			}
13796 		}
13797 		catch (RecognitionException re) {
13798 			_localctx.exception = re;
13799 			_errHandler.reportError(this, re);
13800 			_errHandler.recover(this, re);
13801 		}
13802 		finally {
13803 			exitRule();
13804 		}
13805 		return _localctx;
13806 	}
13807 
13808 	public static class DropTableContext extends ParserRuleContext {
13809 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13810 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
13811 		public TableNamesContext tableNames() {
13812 			return getRuleContext(TableNamesContext.class,0);
13813 		}
13814 		public IfExistsContext ifExists() {
13815 			return getRuleContext(IfExistsContext.class,0);
13816 		}
13817 		public DropTableContext(ParserRuleContext parent, int invokingState) {
13818 			super(parent, invokingState);
13819 		}
13820 		@Override public int getRuleIndex() { return RULE_dropTable; }
13821 		@Override
13822 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13823 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropTable(this);
13824 			else return visitor.visitChildren(this);
13825 		}
13826 	}
13827 
13828 	public final DropTableContext dropTable() throws RecognitionException {
13829 		DropTableContext _localctx = new DropTableContext(_ctx, getState());
13830 		enterRule(_localctx, 284, RULE_dropTable);
13831 		int _la;
13832 		try {
13833 			enterOuterAlt(_localctx, 1);
13834 			{
13835 			setState(2170);
13836 			match(DROP);
13837 			setState(2171);
13838 			match(TABLE);
13839 			setState(2173);
13840 			_errHandler.sync(this);
13841 			_la = _input.LA(1);
13842 			if (_la==IF) {
13843 				{
13844 				setState(2172);
13845 				ifExists();
13846 				}
13847 			}
13848 
13849 			setState(2175);
13850 			tableNames();
13851 			}
13852 		}
13853 		catch (RecognitionException re) {
13854 			_localctx.exception = re;
13855 			_errHandler.reportError(this, re);
13856 			_errHandler.recover(this, re);
13857 		}
13858 		finally {
13859 			exitRule();
13860 		}
13861 		return _localctx;
13862 	}
13863 
13864 	public static class DropIndexContext extends ParserRuleContext {
13865 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13866 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
13867 		public IndexNameContext indexName() {
13868 			return getRuleContext(IndexNameContext.class,0);
13869 		}
13870 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13871 		public TableNameContext tableName() {
13872 			return getRuleContext(TableNameContext.class,0);
13873 		}
13874 		public IfExistsContext ifExists() {
13875 			return getRuleContext(IfExistsContext.class,0);
13876 		}
13877 		public DropIndexContext(ParserRuleContext parent, int invokingState) {
13878 			super(parent, invokingState);
13879 		}
13880 		@Override public int getRuleIndex() { return RULE_dropIndex; }
13881 		@Override
13882 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13883 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropIndex(this);
13884 			else return visitor.visitChildren(this);
13885 		}
13886 	}
13887 
13888 	public final DropIndexContext dropIndex() throws RecognitionException {
13889 		DropIndexContext _localctx = new DropIndexContext(_ctx, getState());
13890 		enterRule(_localctx, 286, RULE_dropIndex);
13891 		int _la;
13892 		try {
13893 			enterOuterAlt(_localctx, 1);
13894 			{
13895 			setState(2177);
13896 			match(DROP);
13897 			setState(2178);
13898 			match(INDEX);
13899 			setState(2180);
13900 			_errHandler.sync(this);
13901 			_la = _input.LA(1);
13902 			if (_la==IF) {
13903 				{
13904 				setState(2179);
13905 				ifExists();
13906 				}
13907 			}
13908 
13909 			setState(2182);
13910 			indexName();
13911 			setState(2183);
13912 			match(ON);
13913 			setState(2184);
13914 			tableName();
13915 			}
13916 		}
13917 		catch (RecognitionException re) {
13918 			_localctx.exception = re;
13919 			_errHandler.reportError(this, re);
13920 			_errHandler.recover(this, re);
13921 		}
13922 		finally {
13923 			exitRule();
13924 		}
13925 		return _localctx;
13926 	}
13927 
13928 	public static class DropDatabaseContext extends ParserRuleContext {
13929 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13930 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
13931 		public List<DatabaseNameContext> databaseName() {
13932 			return getRuleContexts(DatabaseNameContext.class);
13933 		}
13934 		public DatabaseNameContext databaseName(int i) {
13935 			return getRuleContext(DatabaseNameContext.class,i);
13936 		}
13937 		public IfExistsContext ifExists() {
13938 			return getRuleContext(IfExistsContext.class,0);
13939 		}
13940 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13941 		public TerminalNode COMMA_(int i) {
13942 			return getToken(SQLServerStatementParser.COMMA_, i);
13943 		}
13944 		public DropDatabaseContext(ParserRuleContext parent, int invokingState) {
13945 			super(parent, invokingState);
13946 		}
13947 		@Override public int getRuleIndex() { return RULE_dropDatabase; }
13948 		@Override
13949 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13950 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropDatabase(this);
13951 			else return visitor.visitChildren(this);
13952 		}
13953 	}
13954 
13955 	public final DropDatabaseContext dropDatabase() throws RecognitionException {
13956 		DropDatabaseContext _localctx = new DropDatabaseContext(_ctx, getState());
13957 		enterRule(_localctx, 288, RULE_dropDatabase);
13958 		int _la;
13959 		try {
13960 			enterOuterAlt(_localctx, 1);
13961 			{
13962 			setState(2186);
13963 			match(DROP);
13964 			setState(2187);
13965 			match(DATABASE);
13966 			setState(2189);
13967 			_errHandler.sync(this);
13968 			_la = _input.LA(1);
13969 			if (_la==IF) {
13970 				{
13971 				setState(2188);
13972 				ifExists();
13973 				}
13974 			}
13975 
13976 			setState(2191);
13977 			databaseName();
13978 			setState(2196);
13979 			_errHandler.sync(this);
13980 			_la = _input.LA(1);
13981 			while (_la==COMMA_) {
13982 				{
13983 				{
13984 				setState(2192);
13985 				match(COMMA_);
13986 				setState(2193);
13987 				databaseName();
13988 				}
13989 				}
13990 				setState(2198);
13991 				_errHandler.sync(this);
13992 				_la = _input.LA(1);
13993 			}
13994 			}
13995 		}
13996 		catch (RecognitionException re) {
13997 			_localctx.exception = re;
13998 			_errHandler.reportError(this, re);
13999 			_errHandler.recover(this, re);
14000 		}
14001 		finally {
14002 			exitRule();
14003 		}
14004 		return _localctx;
14005 	}
14006 
14007 	public static class DropFunctionContext extends ParserRuleContext {
14008 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14009 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
14010 		public List<FunctionNameContext> functionName() {
14011 			return getRuleContexts(FunctionNameContext.class);
14012 		}
14013 		public FunctionNameContext functionName(int i) {
14014 			return getRuleContext(FunctionNameContext.class,i);
14015 		}
14016 		public IfExistsContext ifExists() {
14017 			return getRuleContext(IfExistsContext.class,0);
14018 		}
14019 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14020 		public TerminalNode COMMA_(int i) {
14021 			return getToken(SQLServerStatementParser.COMMA_, i);
14022 		}
14023 		public DropFunctionContext(ParserRuleContext parent, int invokingState) {
14024 			super(parent, invokingState);
14025 		}
14026 		@Override public int getRuleIndex() { return RULE_dropFunction; }
14027 		@Override
14028 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14029 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropFunction(this);
14030 			else return visitor.visitChildren(this);
14031 		}
14032 	}
14033 
14034 	public final DropFunctionContext dropFunction() throws RecognitionException {
14035 		DropFunctionContext _localctx = new DropFunctionContext(_ctx, getState());
14036 		enterRule(_localctx, 290, RULE_dropFunction);
14037 		int _la;
14038 		try {
14039 			enterOuterAlt(_localctx, 1);
14040 			{
14041 			setState(2199);
14042 			match(DROP);
14043 			setState(2200);
14044 			match(FUNCTION);
14045 			setState(2202);
14046 			_errHandler.sync(this);
14047 			_la = _input.LA(1);
14048 			if (_la==IF) {
14049 				{
14050 				setState(2201);
14051 				ifExists();
14052 				}
14053 			}
14054 
14055 			setState(2204);
14056 			functionName();
14057 			setState(2209);
14058 			_errHandler.sync(this);
14059 			_la = _input.LA(1);
14060 			while (_la==COMMA_) {
14061 				{
14062 				{
14063 				setState(2205);
14064 				match(COMMA_);
14065 				setState(2206);
14066 				functionName();
14067 				}
14068 				}
14069 				setState(2211);
14070 				_errHandler.sync(this);
14071 				_la = _input.LA(1);
14072 			}
14073 			}
14074 		}
14075 		catch (RecognitionException re) {
14076 			_localctx.exception = re;
14077 			_errHandler.reportError(this, re);
14078 			_errHandler.recover(this, re);
14079 		}
14080 		finally {
14081 			exitRule();
14082 		}
14083 		return _localctx;
14084 	}
14085 
14086 	public static class DropProcedureContext extends ParserRuleContext {
14087 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14088 		public List<ProcedureNameContext> procedureName() {
14089 			return getRuleContexts(ProcedureNameContext.class);
14090 		}
14091 		public ProcedureNameContext procedureName(int i) {
14092 			return getRuleContext(ProcedureNameContext.class,i);
14093 		}
14094 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
14095 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
14096 		public IfExistsContext ifExists() {
14097 			return getRuleContext(IfExistsContext.class,0);
14098 		}
14099 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14100 		public TerminalNode COMMA_(int i) {
14101 			return getToken(SQLServerStatementParser.COMMA_, i);
14102 		}
14103 		public DropProcedureContext(ParserRuleContext parent, int invokingState) {
14104 			super(parent, invokingState);
14105 		}
14106 		@Override public int getRuleIndex() { return RULE_dropProcedure; }
14107 		@Override
14108 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14109 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropProcedure(this);
14110 			else return visitor.visitChildren(this);
14111 		}
14112 	}
14113 
14114 	public final DropProcedureContext dropProcedure() throws RecognitionException {
14115 		DropProcedureContext _localctx = new DropProcedureContext(_ctx, getState());
14116 		enterRule(_localctx, 292, RULE_dropProcedure);
14117 		int _la;
14118 		try {
14119 			enterOuterAlt(_localctx, 1);
14120 			{
14121 			setState(2212);
14122 			match(DROP);
14123 			setState(2213);
14124 			_la = _input.LA(1);
14125 			if ( !(_la==PROCEDURE || _la==PROC) ) {
14126 			_errHandler.recoverInline(this);
14127 			}
14128 			else {
14129 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14130 				_errHandler.reportMatch(this);
14131 				consume();
14132 			}
14133 			setState(2215);
14134 			_errHandler.sync(this);
14135 			_la = _input.LA(1);
14136 			if (_la==IF) {
14137 				{
14138 				setState(2214);
14139 				ifExists();
14140 				}
14141 			}
14142 
14143 			setState(2217);
14144 			procedureName();
14145 			setState(2222);
14146 			_errHandler.sync(this);
14147 			_la = _input.LA(1);
14148 			while (_la==COMMA_) {
14149 				{
14150 				{
14151 				setState(2218);
14152 				match(COMMA_);
14153 				setState(2219);
14154 				procedureName();
14155 				}
14156 				}
14157 				setState(2224);
14158 				_errHandler.sync(this);
14159 				_la = _input.LA(1);
14160 			}
14161 			}
14162 		}
14163 		catch (RecognitionException re) {
14164 			_localctx.exception = re;
14165 			_errHandler.reportError(this, re);
14166 			_errHandler.recover(this, re);
14167 		}
14168 		finally {
14169 			exitRule();
14170 		}
14171 		return _localctx;
14172 	}
14173 
14174 	public static class DropViewContext extends ParserRuleContext {
14175 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14176 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
14177 		public List<ViewNameContext> viewName() {
14178 			return getRuleContexts(ViewNameContext.class);
14179 		}
14180 		public ViewNameContext viewName(int i) {
14181 			return getRuleContext(ViewNameContext.class,i);
14182 		}
14183 		public IfExistsContext ifExists() {
14184 			return getRuleContext(IfExistsContext.class,0);
14185 		}
14186 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14187 		public TerminalNode COMMA_(int i) {
14188 			return getToken(SQLServerStatementParser.COMMA_, i);
14189 		}
14190 		public DropViewContext(ParserRuleContext parent, int invokingState) {
14191 			super(parent, invokingState);
14192 		}
14193 		@Override public int getRuleIndex() { return RULE_dropView; }
14194 		@Override
14195 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14196 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropView(this);
14197 			else return visitor.visitChildren(this);
14198 		}
14199 	}
14200 
14201 	public final DropViewContext dropView() throws RecognitionException {
14202 		DropViewContext _localctx = new DropViewContext(_ctx, getState());
14203 		enterRule(_localctx, 294, RULE_dropView);
14204 		int _la;
14205 		try {
14206 			enterOuterAlt(_localctx, 1);
14207 			{
14208 			setState(2225);
14209 			match(DROP);
14210 			setState(2226);
14211 			match(VIEW);
14212 			setState(2228);
14213 			_errHandler.sync(this);
14214 			_la = _input.LA(1);
14215 			if (_la==IF) {
14216 				{
14217 				setState(2227);
14218 				ifExists();
14219 				}
14220 			}
14221 
14222 			setState(2230);
14223 			viewName();
14224 			setState(2235);
14225 			_errHandler.sync(this);
14226 			_la = _input.LA(1);
14227 			while (_la==COMMA_) {
14228 				{
14229 				{
14230 				setState(2231);
14231 				match(COMMA_);
14232 				setState(2232);
14233 				viewName();
14234 				}
14235 				}
14236 				setState(2237);
14237 				_errHandler.sync(this);
14238 				_la = _input.LA(1);
14239 			}
14240 			}
14241 		}
14242 		catch (RecognitionException re) {
14243 			_localctx.exception = re;
14244 			_errHandler.reportError(this, re);
14245 			_errHandler.recover(this, re);
14246 		}
14247 		finally {
14248 			exitRule();
14249 		}
14250 		return _localctx;
14251 	}
14252 
14253 	public static class DropTriggerContext extends ParserRuleContext {
14254 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14255 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
14256 		public List<TriggerNameContext> triggerName() {
14257 			return getRuleContexts(TriggerNameContext.class);
14258 		}
14259 		public TriggerNameContext triggerName(int i) {
14260 			return getRuleContext(TriggerNameContext.class,i);
14261 		}
14262 		public IfExistsContext ifExists() {
14263 			return getRuleContext(IfExistsContext.class,0);
14264 		}
14265 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14266 		public TerminalNode COMMA_(int i) {
14267 			return getToken(SQLServerStatementParser.COMMA_, i);
14268 		}
14269 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14270 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
14271 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
14272 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
14273 		public DropTriggerContext(ParserRuleContext parent, int invokingState) {
14274 			super(parent, invokingState);
14275 		}
14276 		@Override public int getRuleIndex() { return RULE_dropTrigger; }
14277 		@Override
14278 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14279 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropTrigger(this);
14280 			else return visitor.visitChildren(this);
14281 		}
14282 	}
14283 
14284 	public final DropTriggerContext dropTrigger() throws RecognitionException {
14285 		DropTriggerContext _localctx = new DropTriggerContext(_ctx, getState());
14286 		enterRule(_localctx, 296, RULE_dropTrigger);
14287 		int _la;
14288 		try {
14289 			enterOuterAlt(_localctx, 1);
14290 			{
14291 			setState(2238);
14292 			match(DROP);
14293 			setState(2239);
14294 			match(TRIGGER);
14295 			setState(2241);
14296 			_errHandler.sync(this);
14297 			_la = _input.LA(1);
14298 			if (_la==IF) {
14299 				{
14300 				setState(2240);
14301 				ifExists();
14302 				}
14303 			}
14304 
14305 			setState(2243);
14306 			triggerName();
14307 			setState(2248);
14308 			_errHandler.sync(this);
14309 			_la = _input.LA(1);
14310 			while (_la==COMMA_) {
14311 				{
14312 				{
14313 				setState(2244);
14314 				match(COMMA_);
14315 				setState(2245);
14316 				triggerName();
14317 				}
14318 				}
14319 				setState(2250);
14320 				_errHandler.sync(this);
14321 				_la = _input.LA(1);
14322 			}
14323 			setState(2257);
14324 			_errHandler.sync(this);
14325 			_la = _input.LA(1);
14326 			if (_la==ON) {
14327 				{
14328 				setState(2251);
14329 				match(ON);
14330 				setState(2255);
14331 				_errHandler.sync(this);
14332 				switch (_input.LA(1)) {
14333 				case DATABASE:
14334 					{
14335 					setState(2252);
14336 					match(DATABASE);
14337 					}
14338 					break;
14339 				case ALL:
14340 					{
14341 					setState(2253);
14342 					match(ALL);
14343 					setState(2254);
14344 					match(SERVER);
14345 					}
14346 					break;
14347 				default:
14348 					throw new NoViableAltException(this);
14349 				}
14350 				}
14351 			}
14352 
14353 			}
14354 		}
14355 		catch (RecognitionException re) {
14356 			_localctx.exception = re;
14357 			_errHandler.reportError(this, re);
14358 			_errHandler.recover(this, re);
14359 		}
14360 		finally {
14361 			exitRule();
14362 		}
14363 		return _localctx;
14364 	}
14365 
14366 	public static class DropSequenceContext extends ParserRuleContext {
14367 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14368 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
14369 		public List<SequenceNameContext> sequenceName() {
14370 			return getRuleContexts(SequenceNameContext.class);
14371 		}
14372 		public SequenceNameContext sequenceName(int i) {
14373 			return getRuleContext(SequenceNameContext.class,i);
14374 		}
14375 		public IfExistsContext ifExists() {
14376 			return getRuleContext(IfExistsContext.class,0);
14377 		}
14378 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14379 		public TerminalNode COMMA_(int i) {
14380 			return getToken(SQLServerStatementParser.COMMA_, i);
14381 		}
14382 		public DropSequenceContext(ParserRuleContext parent, int invokingState) {
14383 			super(parent, invokingState);
14384 		}
14385 		@Override public int getRuleIndex() { return RULE_dropSequence; }
14386 		@Override
14387 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14388 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropSequence(this);
14389 			else return visitor.visitChildren(this);
14390 		}
14391 	}
14392 
14393 	public final DropSequenceContext dropSequence() throws RecognitionException {
14394 		DropSequenceContext _localctx = new DropSequenceContext(_ctx, getState());
14395 		enterRule(_localctx, 298, RULE_dropSequence);
14396 		int _la;
14397 		try {
14398 			enterOuterAlt(_localctx, 1);
14399 			{
14400 			setState(2259);
14401 			match(DROP);
14402 			setState(2260);
14403 			match(SEQUENCE);
14404 			setState(2262);
14405 			_errHandler.sync(this);
14406 			_la = _input.LA(1);
14407 			if (_la==IF) {
14408 				{
14409 				setState(2261);
14410 				ifExists();
14411 				}
14412 			}
14413 
14414 			setState(2264);
14415 			sequenceName();
14416 			setState(2269);
14417 			_errHandler.sync(this);
14418 			_la = _input.LA(1);
14419 			while (_la==COMMA_) {
14420 				{
14421 				{
14422 				setState(2265);
14423 				match(COMMA_);
14424 				setState(2266);
14425 				sequenceName();
14426 				}
14427 				}
14428 				setState(2271);
14429 				_errHandler.sync(this);
14430 				_la = _input.LA(1);
14431 			}
14432 			}
14433 		}
14434 		catch (RecognitionException re) {
14435 			_localctx.exception = re;
14436 			_errHandler.reportError(this, re);
14437 			_errHandler.recover(this, re);
14438 		}
14439 		finally {
14440 			exitRule();
14441 		}
14442 		return _localctx;
14443 	}
14444 
14445 	public static class DropServiceContext extends ParserRuleContext {
14446 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14447 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
14448 		public ServiceNameContext serviceName() {
14449 			return getRuleContext(ServiceNameContext.class,0);
14450 		}
14451 		public DropServiceContext(ParserRuleContext parent, int invokingState) {
14452 			super(parent, invokingState);
14453 		}
14454 		@Override public int getRuleIndex() { return RULE_dropService; }
14455 		@Override
14456 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14457 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropService(this);
14458 			else return visitor.visitChildren(this);
14459 		}
14460 	}
14461 
14462 	public final DropServiceContext dropService() throws RecognitionException {
14463 		DropServiceContext _localctx = new DropServiceContext(_ctx, getState());
14464 		enterRule(_localctx, 300, RULE_dropService);
14465 		try {
14466 			enterOuterAlt(_localctx, 1);
14467 			{
14468 			setState(2272);
14469 			match(DROP);
14470 			setState(2273);
14471 			match(SERVICE);
14472 			setState(2274);
14473 			serviceName();
14474 			}
14475 		}
14476 		catch (RecognitionException re) {
14477 			_localctx.exception = re;
14478 			_errHandler.reportError(this, re);
14479 			_errHandler.recover(this, re);
14480 		}
14481 		finally {
14482 			exitRule();
14483 		}
14484 		return _localctx;
14485 	}
14486 
14487 	public static class DropSchemaContext extends ParserRuleContext {
14488 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14489 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
14490 		public SchemaNameContext schemaName() {
14491 			return getRuleContext(SchemaNameContext.class,0);
14492 		}
14493 		public IfExistsContext ifExists() {
14494 			return getRuleContext(IfExistsContext.class,0);
14495 		}
14496 		public DropSchemaContext(ParserRuleContext parent, int invokingState) {
14497 			super(parent, invokingState);
14498 		}
14499 		@Override public int getRuleIndex() { return RULE_dropSchema; }
14500 		@Override
14501 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14502 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropSchema(this);
14503 			else return visitor.visitChildren(this);
14504 		}
14505 	}
14506 
14507 	public final DropSchemaContext dropSchema() throws RecognitionException {
14508 		DropSchemaContext _localctx = new DropSchemaContext(_ctx, getState());
14509 		enterRule(_localctx, 302, RULE_dropSchema);
14510 		int _la;
14511 		try {
14512 			enterOuterAlt(_localctx, 1);
14513 			{
14514 			setState(2276);
14515 			match(DROP);
14516 			setState(2277);
14517 			match(SCHEMA);
14518 			setState(2279);
14519 			_errHandler.sync(this);
14520 			_la = _input.LA(1);
14521 			if (_la==IF) {
14522 				{
14523 				setState(2278);
14524 				ifExists();
14525 				}
14526 			}
14527 
14528 			setState(2281);
14529 			schemaName();
14530 			}
14531 		}
14532 		catch (RecognitionException re) {
14533 			_localctx.exception = re;
14534 			_errHandler.reportError(this, re);
14535 			_errHandler.recover(this, re);
14536 		}
14537 		finally {
14538 			exitRule();
14539 		}
14540 		return _localctx;
14541 	}
14542 
14543 	public static class TruncateTableContext extends ParserRuleContext {
14544 		public TerminalNode TRUNCATE() { return getToken(SQLServerStatementParser.TRUNCATE, 0); }
14545 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
14546 		public TableNameContext tableName() {
14547 			return getRuleContext(TableNameContext.class,0);
14548 		}
14549 		public TruncateTableContext(ParserRuleContext parent, int invokingState) {
14550 			super(parent, invokingState);
14551 		}
14552 		@Override public int getRuleIndex() { return RULE_truncateTable; }
14553 		@Override
14554 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14555 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTruncateTable(this);
14556 			else return visitor.visitChildren(this);
14557 		}
14558 	}
14559 
14560 	public final TruncateTableContext truncateTable() throws RecognitionException {
14561 		TruncateTableContext _localctx = new TruncateTableContext(_ctx, getState());
14562 		enterRule(_localctx, 304, RULE_truncateTable);
14563 		try {
14564 			enterOuterAlt(_localctx, 1);
14565 			{
14566 			setState(2283);
14567 			match(TRUNCATE);
14568 			setState(2284);
14569 			match(TABLE);
14570 			setState(2285);
14571 			tableName();
14572 			}
14573 		}
14574 		catch (RecognitionException re) {
14575 			_localctx.exception = re;
14576 			_errHandler.reportError(this, re);
14577 			_errHandler.recover(this, re);
14578 		}
14579 		finally {
14580 			exitRule();
14581 		}
14582 		return _localctx;
14583 	}
14584 
14585 	public static class UpdateStatisticsContext extends ParserRuleContext {
14586 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
14587 		public TerminalNode STATISTICS() { return getToken(SQLServerStatementParser.STATISTICS, 0); }
14588 		public TableNameContext tableName() {
14589 			return getRuleContext(TableNameContext.class,0);
14590 		}
14591 		public List<IndexNameContext> indexName() {
14592 			return getRuleContexts(IndexNameContext.class);
14593 		}
14594 		public IndexNameContext indexName(int i) {
14595 			return getRuleContext(IndexNameContext.class,i);
14596 		}
14597 		public StatisticsWithClauseContext statisticsWithClause() {
14598 			return getRuleContext(StatisticsWithClauseContext.class,0);
14599 		}
14600 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
14601 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14602 		public TerminalNode COMMA_(int i) {
14603 			return getToken(SQLServerStatementParser.COMMA_, i);
14604 		}
14605 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
14606 		public UpdateStatisticsContext(ParserRuleContext parent, int invokingState) {
14607 			super(parent, invokingState);
14608 		}
14609 		@Override public int getRuleIndex() { return RULE_updateStatistics; }
14610 		@Override
14611 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14612 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUpdateStatistics(this);
14613 			else return visitor.visitChildren(this);
14614 		}
14615 	}
14616 
14617 	public final UpdateStatisticsContext updateStatistics() throws RecognitionException {
14618 		UpdateStatisticsContext _localctx = new UpdateStatisticsContext(_ctx, getState());
14619 		enterRule(_localctx, 306, RULE_updateStatistics);
14620 		int _la;
14621 		try {
14622 			enterOuterAlt(_localctx, 1);
14623 			{
14624 			setState(2287);
14625 			match(UPDATE);
14626 			setState(2288);
14627 			match(STATISTICS);
14628 			setState(2289);
14629 			tableName();
14630 			setState(2304);
14631 			_errHandler.sync(this);
14632 			_la = _input.LA(1);
14633 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LP_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CAST - 69)) | (1L << (SUBSTRING - 69)) | (1L << (OFF - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (DATE - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (QUARTER - 133)) | (1L << (MONTH - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)) | (1L << (AUTO - 203)) | (1L << (BLOCKERS - 203)) | (1L << (CLUSTERED - 203)) | (1L << (NONCLUSTERED - 203)) | (1L << (COLUMNSTORE - 203)) | (1L << (CONTENT - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)) | (1L << (MINUTES - 267)) | (1L << (DENY - 267)) | (1L << (DETERMINISTIC - 267)) | (1L << (DISTRIBUTION - 267)) | (1L << (DOCUMENT - 267)) | (1L << (DURABILITY - 267)) | (1L << (ENCRYPTED - 267)) | (1L << (FILESTREAM - 267)) | (1L << (FILETABLE - 267)) | (1L << (FILLFACTOR - 267)) | (1L << (FOLLOWING - 267)) | (1L << (HASH - 267)) | (1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)) | (1L << (CONTROL - 267)) | (1L << (CONCAT - 267)) | (1L << (TAKE - 267)) | (1L << (OWNERSHIP - 267)) | (1L << (DEFINITION - 267)) | (1L << (APPLICATION - 267)) | (1L << (ASSEMBLY - 267)))) != 0) || ((((_la - 331)) & ~0x3f) == 0 && ((1L << (_la - 331)) & ((1L << (SYMMETRIC - 331)) | (1L << (ASYMMETRIC - 331)) | (1L << (SERVER - 331)) | (1L << (RECEIVE - 331)) | (1L << (CHANGE - 331)) | (1L << (TRACE - 331)) | (1L << (TRACKING - 331)) | (1L << (RESOURCES - 331)) | (1L << (SETTINGS - 331)) | (1L << (STATE - 331)) | (1L << (AVAILABILITY - 331)) | (1L << (CREDENTIAL - 331)) | (1L << (ENDPOINT - 331)) | (1L << (EVENT - 331)) | (1L << (NOTIFICATION - 331)) | (1L << (LINKED - 331)) | (1L << (AUDIT - 331)) | (1L << (DDL - 331)) | (1L << (XML - 331)) | (1L << (IMPERSONATE - 331)) | (1L << (SECURABLES - 331)) | (1L << (AUTHENTICATE - 331)) | (1L << (EXTERNAL - 331)) | (1L << (ACCESS - 331)) | (1L << (ADMINISTER - 331)) | (1L << (BULK - 331)) | (1L << (OPERATIONS - 331)) | (1L << (UNSAFE - 331)) | (1L << (SHUTDOWN - 331)) | (1L << (SCOPED - 331)) | (1L << (CONFIGURATION - 331)) | (1L << (DATASPACE - 331)) | (1L << (SERVICE - 331)) | (1L << (CERTIFICATE - 331)) | (1L << (CONTRACT - 331)) | (1L << (ENCRYPTION - 331)) | (1L << (MASTER - 331)) | (1L << (DATA - 331)) | (1L << (SOURCE - 331)) | (1L << (FILE - 331)) | (1L << (FORMAT - 331)) | (1L << (LIBRARY - 331)) | (1L << (FULLTEXT - 331)) | (1L << (MASK - 331)) | (1L << (UNMASK - 331)) | (1L << (MESSAGE - 331)) | (1L << (REMOTE - 331)) | (1L << (BINDING - 331)) | (1L << (ROUTE - 331)) | (1L << (SECURITY - 331)) | (1L << (POLICY - 331)) | (1L << (AGGREGATE - 331)) | (1L << (QUEUE - 331)) | (1L << (RULE - 331)) | (1L << (SYNONYM - 331)) | (1L << (COLLECTION - 331)) | (1L << (SCRIPT - 331)) | (1L << (KILL - 331)) | (1L << (BACKUP - 331)) | (1L << (LOG - 331)) | (1L << (SHOWPLAN - 331)) | (1L << (SUBSCRIBE - 331)) | (1L << (QUERY - 331)) | (1L << (NOTIFICATIONS - 331)))) != 0) || ((((_la - 395)) & ~0x3f) == 0 && ((1L << (_la - 395)) & ((1L << (CHECKPOINT - 395)) | (1L << (SEQUENCE - 395)) | (1L << (ABORT_AFTER_WAIT - 395)) | (1L << (ALLOW_PAGE_LOCKS - 395)) | (1L << (ALLOW_ROW_LOCKS - 395)) | (1L << (ALL_SPARSE_COLUMNS - 395)) | (1L << (BUCKET_COUNT - 395)) | (1L << (COLUMNSTORE_ARCHIVE - 395)) | (1L << (COLUMN_ENCRYPTION_KEY - 395)) | (1L << (COLUMN_SET - 395)) | (1L << (COMPRESSION_DELAY - 395)) | (1L << (DATABASE_DEAULT - 395)) | (1L << (DATA_COMPRESSION - 395)) | (1L << (DATA_CONSISTENCY_CHECK - 395)) | (1L << (ENCRYPTION_TYPE - 395)) | (1L << (SYSTEM_TIME - 395)) | (1L << (SYSTEM_VERSIONING - 395)) | (1L << (TEXTIMAGE_ON - 395)) | (1L << (WAIT_AT_LOW_PRIORITY - 395)) | (1L << (STATISTICS_INCREMENTAL - 395)) | (1L << (STATISTICS_NORECOMPUTE - 395)) | (1L << (ROUND_ROBIN - 395)) | (1L << (SCHEMA_AND_DATA - 395)) | (1L << (SCHEMA_ONLY - 395)) | (1L << (SORT_IN_TEMPDB - 395)) | (1L << (IGNORE_DUP_KEY - 395)) | (1L << (IMPLICIT_TRANSACTIONS - 395)) | (1L << (MAX_DURATION - 395)) | (1L << (MEMORY_OPTIMIZED - 395)) | (1L << (MIGRATION_STATE - 395)) | (1L << (PAD_INDEX - 395)) | (1L << (REMOTE_DATA_ARCHIVE - 395)) | (1L << (FILESTREAM_ON - 395)) | (1L << (FILETABLE_COLLATE_FILENAME - 395)) | (1L << (FILETABLE_DIRECTORY - 395)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILTER_PREDICATE - 395)) | (1L << (HISTORY_RETENTION_PERIOD - 395)) | (1L << (HISTORY_TABLE - 395)) | (1L << (LOCK_ESCALATION - 395)) | (1L << (DROP_EXISTING - 395)) | (1L << (ROW_NUMBER - 395)) | (1L << (FIRST - 395)) | (1L << (DATETIME2 - 395)) | (1L << (OUTPUT - 395)))) != 0) || ((((_la - 459)) & ~0x3f) == 0 && ((1L << (_la - 459)) & ((1L << (INSERTED - 459)) | (1L << (DELETED - 459)) | (1L << (FILENAME - 459)) | (1L << (SIZE - 459)) | (1L << (MAXSIZE - 459)) | (1L << (FILEGROWTH - 459)) | (1L << (UNLIMITED - 459)) | (1L << (KB - 459)) | (1L << (MB - 459)) | (1L << (GB - 459)) | (1L << (TB - 459)) | (1L << (CONTAINS - 459)) | (1L << (MEMORY_OPTIMIZED_DATA - 459)) | (1L << (FILEGROUP - 459)) | (1L << (NON_TRANSACTED_ACCESS - 459)) | (1L << (DB_CHAINING - 459)) | (1L << (TRUSTWORTHY - 459)) | (1L << (FORWARD_ONLY - 459)) | (1L << (KEYSET - 459)) | (1L << (FAST_FORWARD - 459)) | (1L << (SCROLL_LOCKS - 459)) | (1L << (OPTIMISTIC - 459)) | (1L << (TYPE_WARNING - 459)) | (1L << (SCHEMABINDING - 459)) | (1L << (CALLER - 459)))) != 0) || ((((_la - 527)) & ~0x3f) == 0 && ((1L << (_la - 527)) & ((1L << (OWNER - 527)) | (1L << (SNAPSHOT - 527)) | (1L << (REPEATABLE - 527)) | (1L << (SERIALIZABLE - 527)) | (1L << (NATIVE_COMPILATION - 527)) | (1L << (VIEW_METADATA - 527)) | (1L << (INSTEAD - 527)) | (1L << (APPEND - 527)) | (1L << (INCREMENT - 527)) | (1L << (CACHE - 527)) | (1L << (MINVALUE - 527)) | (1L << (MAXVALUE - 527)) | (1L << (RESTART - 527)) | (1L << (LOB_COMPACTION - 527)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 527)) | (1L << (REORGANIZE - 527)) | (1L << (RESUME - 527)) | (1L << (PAUSE - 527)) | (1L << (ABORT - 527)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 527)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 527)) | (1L << (IMMEDIATE - 527)) | (1L << (NO_WAIT - 527)) | (1L << (TARGET_RECOVERY_TIME - 527)) | (1L << (SECONDS - 527)) | (1L << (HONOR_BROKER_PRIORITY - 527)) | (1L << (ERROR_BROKER_CONVERSATIONS - 527)) | (1L << (NEW_BROKER - 527)) | (1L << (DISABLE_BROKER - 527)) | (1L << (ENABLE_BROKER - 527)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 527)) | (1L << (READ_COMMITTED_SNAPSHOT - 527)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 527)) | (1L << (RECURSIVE_TRIGGERS - 527)) | (1L << (QUOTED_IDENTIFIER - 527)) | (1L << (NUMERIC_ROUNDABORT - 527)) | (1L << (CONCAT_NULL_YIELDS_NULL - 527)) | (1L << (COMPATIBILITY_LEVEL - 527)) | (1L << (ARITHABORT - 527)) | (1L << (ANSI_WARNINGS - 527)) | (1L << (ANSI_PADDING - 527)) | (1L << (ANSI_NULLS - 527)) | (1L << (ANSI_NULL_DEFAULT - 527)) | (1L << (PAGE_VERIFY - 527)) | (1L << (CHECKSUM - 527)) | (1L << (TORN_PAGE_DETECTION - 527)) | (1L << (BULK_LOGGED - 527)))) != 0) || ((((_la - 591)) & ~0x3f) == 0 && ((1L << (_la - 591)) & ((1L << (RECOVERY - 591)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 591)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 591)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 591)) | (1L << (EXECUTION_COUNT - 591)) | (1L << (QUERY_CAPTURE_POLICY - 591)) | (1L << (WAIT_STATS_CAPTURE_MODE - 591)) | (1L << (MAX_PLANS_PER_QUERY - 591)) | (1L << (QUERY_CAPTURE_MODE - 591)) | (1L << (SIZE_BASED_CLEANUP_MODE - 591)) | (1L << (INTERVAL_LENGTH_MINUTES - 591)) | (1L << (MAX_STORAGE_SIZE_MB - 591)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 591)) | (1L << (CLEANUP_POLICY - 591)) | (1L << (CUSTOM - 591)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 591)) | (1L << (OPERATION_MODE - 591)) | (1L << (QUERY_STORE - 591)) | (1L << (CURSOR_DEFAULT - 591)) | (1L << (GLOBAL - 591)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 591)) | (1L << (HOURS - 591)) | (1L << (CHANGE_RETENTION - 591)) | (1L << (AUTO_CLEANUP - 591)) | (1L << (CHANGE_TRACKING - 591)) | (1L << (AUTOMATIC_TUNING - 591)) | (1L << (FORCE_LAST_GOOD_PLAN - 591)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 591)) | (1L << (AUTO_UPDATE_STATISTICS - 591)) | (1L << (AUTO_SHRINK - 591)) | (1L << (AUTO_CREATE_STATISTICS - 591)) | (1L << (INCREMENTAL - 591)) | (1L << (AUTO_CLOSE - 591)) | (1L << (DATA_RETENTION - 591)) | (1L << (TEMPORAL_HISTORY_RETENTION - 591)) | (1L << (EDITION - 591)) | (1L << (MIXED_PAGE_ALLOCATION - 591)) | (1L << (DISABLED - 591)) | (1L << (ALLOWED - 591)) | (1L << (HADR - 591)) | (1L << (MULTI_USER - 591)) | (1L << (RESTRICTED_USER - 591)) | (1L << (SINGLE_USER - 591)) | (1L << (OFFLINE - 591)) | (1L << (EMERGENCY - 591)) | (1L << (SUSPEND - 591)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 591)) | (1L << (ELASTIC_POOL - 591)) | (1L << (SERVICE_OBJECTIVE - 591)) | (1L << (DATABASE_NAME - 591)) | (1L << (ALLOW_CONNECTIONS - 591)) | (1L << (GEO - 591)) | (1L << (NAMED - 591)) | (1L << (DATEFIRST - 591)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 591)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 591)) | (1L << (SECONDARY - 591)) | (1L << (FAILOVER - 591)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 591)) | (1L << (DEFAULT_LANGUAGE - 591)) | (1L << (INLINE - 591)) | (1L << (NESTED_TRIGGERS - 591)) | (1L << (TRANSFORM_NOISE_WORDS - 591)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 591)))) != 0) || ((((_la - 655)) & ~0x3f) == 0 && ((1L << (_la - 655)) & ((1L << (PERSISTENT_LOG_BUFFER - 655)) | (1L << (DIRECTORY_NAME - 655)) | (1L << (DATEFORMAT - 655)) | (1L << (DELAYED_DURABILITY - 655)) | (1L << (AUTHORIZATION - 655)) | (1L << (TRANSFER - 655)) | (1L << (PROVIDER - 655)) | (1L << (SEARCH - 655)) | (1L << (MEMBER - 655)) | (1L << (IDENTIFIER_ - 655)) | (1L << (DELIMITED_IDENTIFIER_ - 655)))) != 0)) {
14634 				{
14635 				setState(2291);
14636 				_errHandler.sync(this);
14637 				_la = _input.LA(1);
14638 				if (_la==LP_) {
14639 					{
14640 					setState(2290);
14641 					match(LP_);
14642 					}
14643 				}
14644 
14645 				setState(2293);
14646 				indexName();
14647 				setState(2298);
14648 				_errHandler.sync(this);
14649 				_la = _input.LA(1);
14650 				while (_la==COMMA_) {
14651 					{
14652 					{
14653 					setState(2294);
14654 					match(COMMA_);
14655 					setState(2295);
14656 					indexName();
14657 					}
14658 					}
14659 					setState(2300);
14660 					_errHandler.sync(this);
14661 					_la = _input.LA(1);
14662 				}
14663 				setState(2302);
14664 				_errHandler.sync(this);
14665 				_la = _input.LA(1);
14666 				if (_la==RP_) {
14667 					{
14668 					setState(2301);
14669 					match(RP_);
14670 					}
14671 				}
14672 
14673 				}
14674 			}
14675 
14676 			setState(2307);
14677 			_errHandler.sync(this);
14678 			_la = _input.LA(1);
14679 			if (_la==WITH) {
14680 				{
14681 				setState(2306);
14682 				statisticsWithClause();
14683 				}
14684 			}
14685 
14686 			}
14687 		}
14688 		catch (RecognitionException re) {
14689 			_localctx.exception = re;
14690 			_errHandler.reportError(this, re);
14691 			_errHandler.recover(this, re);
14692 		}
14693 		finally {
14694 			exitRule();
14695 		}
14696 		return _localctx;
14697 	}
14698 
14699 	public static class StatisticsWithClauseContext extends ParserRuleContext {
14700 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
14701 		public SampleOptionContext sampleOption() {
14702 			return getRuleContext(SampleOptionContext.class,0);
14703 		}
14704 		public StatisticsOptionsContext statisticsOptions() {
14705 			return getRuleContext(StatisticsOptionsContext.class,0);
14706 		}
14707 		public StatisticsWithClauseContext(ParserRuleContext parent, int invokingState) {
14708 			super(parent, invokingState);
14709 		}
14710 		@Override public int getRuleIndex() { return RULE_statisticsWithClause; }
14711 		@Override
14712 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14713 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsWithClause(this);
14714 			else return visitor.visitChildren(this);
14715 		}
14716 	}
14717 
14718 	public final StatisticsWithClauseContext statisticsWithClause() throws RecognitionException {
14719 		StatisticsWithClauseContext _localctx = new StatisticsWithClauseContext(_ctx, getState());
14720 		enterRule(_localctx, 308, RULE_statisticsWithClause);
14721 		int _la;
14722 		try {
14723 			enterOuterAlt(_localctx, 1);
14724 			{
14725 			setState(2309);
14726 			match(WITH);
14727 			setState(2311);
14728 			_errHandler.sync(this);
14729 			_la = _input.LA(1);
14730 			if (((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (FULLSCAN - 704)) | (1L << (SAMPLE - 704)) | (1L << (RESAMPLE - 704)))) != 0)) {
14731 				{
14732 				setState(2310);
14733 				sampleOption();
14734 				}
14735 			}
14736 
14737 			setState(2314);
14738 			_errHandler.sync(this);
14739 			_la = _input.LA(1);
14740 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << COMMA_) | (1L << COLUMNS) | (1L << INDEX))) != 0) || _la==ALL || _la==MAXDOP || _la==INCREMENTAL || _la==NORECOMPUTE || _la==AUTO_DROP) {
14741 				{
14742 				setState(2313);
14743 				statisticsOptions();
14744 				}
14745 			}
14746 
14747 			}
14748 		}
14749 		catch (RecognitionException re) {
14750 			_localctx.exception = re;
14751 			_errHandler.reportError(this, re);
14752 			_errHandler.recover(this, re);
14753 		}
14754 		finally {
14755 			exitRule();
14756 		}
14757 		return _localctx;
14758 	}
14759 
14760 	public static class SampleOptionContext extends ParserRuleContext {
14761 		public TerminalNode FULLSCAN() { return getToken(SQLServerStatementParser.FULLSCAN, 0); }
14762 		public TerminalNode PERSIST_SAMPLE_PERCENT() { return getToken(SQLServerStatementParser.PERSIST_SAMPLE_PERCENT, 0); }
14763 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
14764 		public TerminalNode SAMPLE() { return getToken(SQLServerStatementParser.SAMPLE, 0); }
14765 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
14766 		public TerminalNode NUMBER_(int i) {
14767 			return getToken(SQLServerStatementParser.NUMBER_, i);
14768 		}
14769 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14770 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
14771 		public TerminalNode PERCENT() { return getToken(SQLServerStatementParser.PERCENT, 0); }
14772 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
14773 		public TerminalNode RESAMPLE() { return getToken(SQLServerStatementParser.RESAMPLE, 0); }
14774 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
14775 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
14776 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
14777 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14778 		public TerminalNode COMMA_(int i) {
14779 			return getToken(SQLServerStatementParser.COMMA_, i);
14780 		}
14781 		public SampleOptionContext(ParserRuleContext parent, int invokingState) {
14782 			super(parent, invokingState);
14783 		}
14784 		@Override public int getRuleIndex() { return RULE_sampleOption; }
14785 		@Override
14786 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14787 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSampleOption(this);
14788 			else return visitor.visitChildren(this);
14789 		}
14790 	}
14791 
14792 	public final SampleOptionContext sampleOption() throws RecognitionException {
14793 		SampleOptionContext _localctx = new SampleOptionContext(_ctx, getState());
14794 		enterRule(_localctx, 310, RULE_sampleOption);
14795 		int _la;
14796 		try {
14797 			setState(2342);
14798 			_errHandler.sync(this);
14799 			switch (_input.LA(1)) {
14800 			case FULLSCAN:
14801 			case SAMPLE:
14802 				enterOuterAlt(_localctx, 1);
14803 				{
14804 				setState(2320);
14805 				_errHandler.sync(this);
14806 				switch (_input.LA(1)) {
14807 				case FULLSCAN:
14808 					{
14809 					setState(2316);
14810 					match(FULLSCAN);
14811 					}
14812 					break;
14813 				case SAMPLE:
14814 					{
14815 					{
14816 					setState(2317);
14817 					match(SAMPLE);
14818 					setState(2318);
14819 					match(NUMBER_);
14820 					setState(2319);
14821 					_la = _input.LA(1);
14822 					if ( !(_la==PERCENT || _la==ROWS) ) {
14823 					_errHandler.recoverInline(this);
14824 					}
14825 					else {
14826 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14827 						_errHandler.reportMatch(this);
14828 						consume();
14829 					}
14830 					}
14831 					}
14832 					break;
14833 				default:
14834 					throw new NoViableAltException(this);
14835 				}
14836 				setState(2325);
14837 				_errHandler.sync(this);
14838 				_la = _input.LA(1);
14839 				if (_la==PERSIST_SAMPLE_PERCENT) {
14840 					{
14841 					setState(2322);
14842 					match(PERSIST_SAMPLE_PERCENT);
14843 					setState(2323);
14844 					match(EQ_);
14845 					setState(2324);
14846 					_la = _input.LA(1);
14847 					if ( !(_la==ON || _la==OFF) ) {
14848 					_errHandler.recoverInline(this);
14849 					}
14850 					else {
14851 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14852 						_errHandler.reportMatch(this);
14853 						consume();
14854 					}
14855 					}
14856 				}
14857 
14858 				}
14859 				break;
14860 			case RESAMPLE:
14861 				enterOuterAlt(_localctx, 2);
14862 				{
14863 				setState(2327);
14864 				match(RESAMPLE);
14865 				setState(2340);
14866 				_errHandler.sync(this);
14867 				_la = _input.LA(1);
14868 				if (_la==ON) {
14869 					{
14870 					setState(2328);
14871 					match(ON);
14872 					setState(2329);
14873 					match(PARTITIONS);
14874 					setState(2330);
14875 					match(LP_);
14876 					setState(2331);
14877 					match(NUMBER_);
14878 					setState(2336);
14879 					_errHandler.sync(this);
14880 					_la = _input.LA(1);
14881 					while (_la==COMMA_) {
14882 						{
14883 						{
14884 						setState(2332);
14885 						match(COMMA_);
14886 						setState(2333);
14887 						match(NUMBER_);
14888 						}
14889 						}
14890 						setState(2338);
14891 						_errHandler.sync(this);
14892 						_la = _input.LA(1);
14893 					}
14894 					setState(2339);
14895 					match(RP_);
14896 					}
14897 				}
14898 
14899 				}
14900 				break;
14901 			default:
14902 				throw new NoViableAltException(this);
14903 			}
14904 		}
14905 		catch (RecognitionException re) {
14906 			_localctx.exception = re;
14907 			_errHandler.reportError(this, re);
14908 			_errHandler.recover(this, re);
14909 		}
14910 		finally {
14911 			exitRule();
14912 		}
14913 		return _localctx;
14914 	}
14915 
14916 	public static class StatisticsOptionsContext extends ParserRuleContext {
14917 		public List<StatisticsOptionContext> statisticsOption() {
14918 			return getRuleContexts(StatisticsOptionContext.class);
14919 		}
14920 		public StatisticsOptionContext statisticsOption(int i) {
14921 			return getRuleContext(StatisticsOptionContext.class,i);
14922 		}
14923 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14924 		public TerminalNode COMMA_(int i) {
14925 			return getToken(SQLServerStatementParser.COMMA_, i);
14926 		}
14927 		public StatisticsOptionsContext(ParserRuleContext parent, int invokingState) {
14928 			super(parent, invokingState);
14929 		}
14930 		@Override public int getRuleIndex() { return RULE_statisticsOptions; }
14931 		@Override
14932 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14933 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsOptions(this);
14934 			else return visitor.visitChildren(this);
14935 		}
14936 	}
14937 
14938 	public final StatisticsOptionsContext statisticsOptions() throws RecognitionException {
14939 		StatisticsOptionsContext _localctx = new StatisticsOptionsContext(_ctx, getState());
14940 		enterRule(_localctx, 312, RULE_statisticsOptions);
14941 		int _la;
14942 		try {
14943 			enterOuterAlt(_localctx, 1);
14944 			{
14945 			setState(2348); 
14946 			_errHandler.sync(this);
14947 			_la = _input.LA(1);
14948 			do {
14949 				{
14950 				{
14951 				setState(2345);
14952 				_errHandler.sync(this);
14953 				_la = _input.LA(1);
14954 				if (_la==COMMA_) {
14955 					{
14956 					setState(2344);
14957 					match(COMMA_);
14958 					}
14959 				}
14960 
14961 				setState(2347);
14962 				statisticsOption();
14963 				}
14964 				}
14965 				setState(2350); 
14966 				_errHandler.sync(this);
14967 				_la = _input.LA(1);
14968 			} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << COMMA_) | (1L << COLUMNS) | (1L << INDEX))) != 0) || _la==ALL || _la==MAXDOP || _la==INCREMENTAL || _la==NORECOMPUTE || _la==AUTO_DROP );
14969 			}
14970 		}
14971 		catch (RecognitionException re) {
14972 			_localctx.exception = re;
14973 			_errHandler.reportError(this, re);
14974 			_errHandler.recover(this, re);
14975 		}
14976 		finally {
14977 			exitRule();
14978 		}
14979 		return _localctx;
14980 	}
14981 
14982 	public static class StatisticsOptionContext extends ParserRuleContext {
14983 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
14984 		public TerminalNode COLUMNS() { return getToken(SQLServerStatementParser.COLUMNS, 0); }
14985 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
14986 		public TerminalNode NORECOMPUTE() { return getToken(SQLServerStatementParser.NORECOMPUTE, 0); }
14987 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
14988 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
14989 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14990 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
14991 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
14992 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
14993 		public TerminalNode AUTO_DROP() { return getToken(SQLServerStatementParser.AUTO_DROP, 0); }
14994 		public StatisticsOptionContext(ParserRuleContext parent, int invokingState) {
14995 			super(parent, invokingState);
14996 		}
14997 		@Override public int getRuleIndex() { return RULE_statisticsOption; }
14998 		@Override
14999 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15000 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsOption(this);
15001 			else return visitor.visitChildren(this);
15002 		}
15003 	}
15004 
15005 	public final StatisticsOptionContext statisticsOption() throws RecognitionException {
15006 		StatisticsOptionContext _localctx = new StatisticsOptionContext(_ctx, getState());
15007 		enterRule(_localctx, 314, RULE_statisticsOption);
15008 		int _la;
15009 		try {
15010 			setState(2365);
15011 			_errHandler.sync(this);
15012 			switch (_input.LA(1)) {
15013 			case ALL:
15014 				enterOuterAlt(_localctx, 1);
15015 				{
15016 				setState(2352);
15017 				match(ALL);
15018 				}
15019 				break;
15020 			case COLUMNS:
15021 				enterOuterAlt(_localctx, 2);
15022 				{
15023 				setState(2353);
15024 				match(COLUMNS);
15025 				}
15026 				break;
15027 			case INDEX:
15028 				enterOuterAlt(_localctx, 3);
15029 				{
15030 				setState(2354);
15031 				match(INDEX);
15032 				}
15033 				break;
15034 			case NORECOMPUTE:
15035 				enterOuterAlt(_localctx, 4);
15036 				{
15037 				setState(2355);
15038 				match(NORECOMPUTE);
15039 				}
15040 				break;
15041 			case INCREMENTAL:
15042 				enterOuterAlt(_localctx, 5);
15043 				{
15044 				setState(2356);
15045 				match(INCREMENTAL);
15046 				setState(2357);
15047 				match(EQ_);
15048 				setState(2358);
15049 				_la = _input.LA(1);
15050 				if ( !(_la==ON || _la==OFF) ) {
15051 				_errHandler.recoverInline(this);
15052 				}
15053 				else {
15054 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15055 					_errHandler.reportMatch(this);
15056 					consume();
15057 				}
15058 				}
15059 				break;
15060 			case MAXDOP:
15061 				enterOuterAlt(_localctx, 6);
15062 				{
15063 				setState(2359);
15064 				match(MAXDOP);
15065 				setState(2360);
15066 				match(EQ_);
15067 				setState(2361);
15068 				match(NUMBER_);
15069 				}
15070 				break;
15071 			case AUTO_DROP:
15072 				enterOuterAlt(_localctx, 7);
15073 				{
15074 				setState(2362);
15075 				match(AUTO_DROP);
15076 				setState(2363);
15077 				match(EQ_);
15078 				setState(2364);
15079 				_la = _input.LA(1);
15080 				if ( !(_la==ON || _la==OFF) ) {
15081 				_errHandler.recoverInline(this);
15082 				}
15083 				else {
15084 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15085 					_errHandler.reportMatch(this);
15086 					consume();
15087 				}
15088 				}
15089 				break;
15090 			default:
15091 				throw new NoViableAltException(this);
15092 			}
15093 		}
15094 		catch (RecognitionException re) {
15095 			_localctx.exception = re;
15096 			_errHandler.reportError(this, re);
15097 			_errHandler.recover(this, re);
15098 		}
15099 		finally {
15100 			exitRule();
15101 		}
15102 		return _localctx;
15103 	}
15104 
15105 	public static class FileTableClauseContext extends ParserRuleContext {
15106 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
15107 		public TerminalNode FILETABLE() { return getToken(SQLServerStatementParser.FILETABLE, 0); }
15108 		public FileTableClauseContext(ParserRuleContext parent, int invokingState) {
15109 			super(parent, invokingState);
15110 		}
15111 		@Override public int getRuleIndex() { return RULE_fileTableClause; }
15112 		@Override
15113 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15114 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileTableClause(this);
15115 			else return visitor.visitChildren(this);
15116 		}
15117 	}
15118 
15119 	public final FileTableClauseContext fileTableClause() throws RecognitionException {
15120 		FileTableClauseContext _localctx = new FileTableClauseContext(_ctx, getState());
15121 		enterRule(_localctx, 316, RULE_fileTableClause);
15122 		int _la;
15123 		try {
15124 			enterOuterAlt(_localctx, 1);
15125 			{
15126 			setState(2369);
15127 			_errHandler.sync(this);
15128 			_la = _input.LA(1);
15129 			if (_la==AS) {
15130 				{
15131 				setState(2367);
15132 				match(AS);
15133 				setState(2368);
15134 				match(FILETABLE);
15135 				}
15136 			}
15137 
15138 			}
15139 		}
15140 		catch (RecognitionException re) {
15141 			_localctx.exception = re;
15142 			_errHandler.reportError(this, re);
15143 			_errHandler.recover(this, re);
15144 		}
15145 		finally {
15146 			exitRule();
15147 		}
15148 		return _localctx;
15149 	}
15150 
15151 	public static class CreateDefinitionClauseContext extends ParserRuleContext {
15152 		public CreateTableDefinitionsContext createTableDefinitions() {
15153 			return getRuleContext(CreateTableDefinitionsContext.class,0);
15154 		}
15155 		public PartitionSchemeContext partitionScheme() {
15156 			return getRuleContext(PartitionSchemeContext.class,0);
15157 		}
15158 		public FileGroupContext fileGroup() {
15159 			return getRuleContext(FileGroupContext.class,0);
15160 		}
15161 		public CreateDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
15162 			super(parent, invokingState);
15163 		}
15164 		@Override public int getRuleIndex() { return RULE_createDefinitionClause; }
15165 		@Override
15166 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15167 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDefinitionClause(this);
15168 			else return visitor.visitChildren(this);
15169 		}
15170 	}
15171 
15172 	public final CreateDefinitionClauseContext createDefinitionClause() throws RecognitionException {
15173 		CreateDefinitionClauseContext _localctx = new CreateDefinitionClauseContext(_ctx, getState());
15174 		enterRule(_localctx, 318, RULE_createDefinitionClause);
15175 		try {
15176 			enterOuterAlt(_localctx, 1);
15177 			{
15178 			setState(2371);
15179 			createTableDefinitions();
15180 			setState(2372);
15181 			partitionScheme();
15182 			setState(2373);
15183 			fileGroup();
15184 			}
15185 		}
15186 		catch (RecognitionException re) {
15187 			_localctx.exception = re;
15188 			_errHandler.reportError(this, re);
15189 			_errHandler.recover(this, re);
15190 		}
15191 		finally {
15192 			exitRule();
15193 		}
15194 		return _localctx;
15195 	}
15196 
15197 	public static class CreateTableDefinitionsContext extends ParserRuleContext {
15198 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15199 		public List<CreateTableDefinitionContext> createTableDefinition() {
15200 			return getRuleContexts(CreateTableDefinitionContext.class);
15201 		}
15202 		public CreateTableDefinitionContext createTableDefinition(int i) {
15203 			return getRuleContext(CreateTableDefinitionContext.class,i);
15204 		}
15205 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15206 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15207 		public TerminalNode COMMA_(int i) {
15208 			return getToken(SQLServerStatementParser.COMMA_, i);
15209 		}
15210 		public PeriodClauseContext periodClause() {
15211 			return getRuleContext(PeriodClauseContext.class,0);
15212 		}
15213 		public CreateTableDefinitionsContext(ParserRuleContext parent, int invokingState) {
15214 			super(parent, invokingState);
15215 		}
15216 		@Override public int getRuleIndex() { return RULE_createTableDefinitions; }
15217 		@Override
15218 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15219 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableDefinitions(this);
15220 			else return visitor.visitChildren(this);
15221 		}
15222 	}
15223 
15224 	public final CreateTableDefinitionsContext createTableDefinitions() throws RecognitionException {
15225 		CreateTableDefinitionsContext _localctx = new CreateTableDefinitionsContext(_ctx, getState());
15226 		enterRule(_localctx, 320, RULE_createTableDefinitions);
15227 		int _la;
15228 		try {
15229 			int _alt;
15230 			enterOuterAlt(_localctx, 1);
15231 			{
15232 			setState(2375);
15233 			match(LP_);
15234 			setState(2376);
15235 			createTableDefinition();
15236 			setState(2381);
15237 			_errHandler.sync(this);
15238 			_alt = getInterpreter().adaptivePredict(_input,170,_ctx);
15239 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
15240 				if ( _alt==1 ) {
15241 					{
15242 					{
15243 					setState(2377);
15244 					match(COMMA_);
15245 					setState(2378);
15246 					createTableDefinition();
15247 					}
15248 					} 
15249 				}
15250 				setState(2383);
15251 				_errHandler.sync(this);
15252 				_alt = getInterpreter().adaptivePredict(_input,170,_ctx);
15253 			}
15254 			setState(2386);
15255 			_errHandler.sync(this);
15256 			_la = _input.LA(1);
15257 			if (_la==COMMA_) {
15258 				{
15259 				setState(2384);
15260 				match(COMMA_);
15261 				setState(2385);
15262 				periodClause();
15263 				}
15264 			}
15265 
15266 			setState(2388);
15267 			match(RP_);
15268 			}
15269 		}
15270 		catch (RecognitionException re) {
15271 			_localctx.exception = re;
15272 			_errHandler.reportError(this, re);
15273 			_errHandler.recover(this, re);
15274 		}
15275 		finally {
15276 			exitRule();
15277 		}
15278 		return _localctx;
15279 	}
15280 
15281 	public static class CreateTableDefinitionContext extends ParserRuleContext {
15282 		public ColumnDefinitionContext columnDefinition() {
15283 			return getRuleContext(ColumnDefinitionContext.class,0);
15284 		}
15285 		public ComputedColumnDefinitionContext computedColumnDefinition() {
15286 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
15287 		}
15288 		public ColumnSetDefinitionContext columnSetDefinition() {
15289 			return getRuleContext(ColumnSetDefinitionContext.class,0);
15290 		}
15291 		public TableConstraintContext tableConstraint() {
15292 			return getRuleContext(TableConstraintContext.class,0);
15293 		}
15294 		public TableIndexContext tableIndex() {
15295 			return getRuleContext(TableIndexContext.class,0);
15296 		}
15297 		public CreateTableDefinitionContext(ParserRuleContext parent, int invokingState) {
15298 			super(parent, invokingState);
15299 		}
15300 		@Override public int getRuleIndex() { return RULE_createTableDefinition; }
15301 		@Override
15302 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15303 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableDefinition(this);
15304 			else return visitor.visitChildren(this);
15305 		}
15306 	}
15307 
15308 	public final CreateTableDefinitionContext createTableDefinition() throws RecognitionException {
15309 		CreateTableDefinitionContext _localctx = new CreateTableDefinitionContext(_ctx, getState());
15310 		enterRule(_localctx, 322, RULE_createTableDefinition);
15311 		try {
15312 			setState(2395);
15313 			_errHandler.sync(this);
15314 			switch ( getInterpreter().adaptivePredict(_input,172,_ctx) ) {
15315 			case 1:
15316 				enterOuterAlt(_localctx, 1);
15317 				{
15318 				setState(2390);
15319 				columnDefinition();
15320 				}
15321 				break;
15322 			case 2:
15323 				enterOuterAlt(_localctx, 2);
15324 				{
15325 				setState(2391);
15326 				computedColumnDefinition();
15327 				}
15328 				break;
15329 			case 3:
15330 				enterOuterAlt(_localctx, 3);
15331 				{
15332 				setState(2392);
15333 				columnSetDefinition();
15334 				}
15335 				break;
15336 			case 4:
15337 				enterOuterAlt(_localctx, 4);
15338 				{
15339 				setState(2393);
15340 				tableConstraint();
15341 				}
15342 				break;
15343 			case 5:
15344 				enterOuterAlt(_localctx, 5);
15345 				{
15346 				setState(2394);
15347 				tableIndex();
15348 				}
15349 				break;
15350 			}
15351 		}
15352 		catch (RecognitionException re) {
15353 			_localctx.exception = re;
15354 			_errHandler.reportError(this, re);
15355 			_errHandler.recover(this, re);
15356 		}
15357 		finally {
15358 			exitRule();
15359 		}
15360 		return _localctx;
15361 	}
15362 
15363 	public static class ColumnDefinitionContext extends ParserRuleContext {
15364 		public ColumnNameContext columnName() {
15365 			return getRuleContext(ColumnNameContext.class,0);
15366 		}
15367 		public DataTypeContext dataType() {
15368 			return getRuleContext(DataTypeContext.class,0);
15369 		}
15370 		public ColumnConstraintsContext columnConstraints() {
15371 			return getRuleContext(ColumnConstraintsContext.class,0);
15372 		}
15373 		public List<ColumnDefinitionOptionContext> columnDefinitionOption() {
15374 			return getRuleContexts(ColumnDefinitionOptionContext.class);
15375 		}
15376 		public ColumnDefinitionOptionContext columnDefinitionOption(int i) {
15377 			return getRuleContext(ColumnDefinitionOptionContext.class,i);
15378 		}
15379 		public ColumnIndexContext columnIndex() {
15380 			return getRuleContext(ColumnIndexContext.class,0);
15381 		}
15382 		public ColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
15383 			super(parent, invokingState);
15384 		}
15385 		@Override public int getRuleIndex() { return RULE_columnDefinition; }
15386 		@Override
15387 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15388 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnDefinition(this);
15389 			else return visitor.visitChildren(this);
15390 		}
15391 	}
15392 
15393 	public final ColumnDefinitionContext columnDefinition() throws RecognitionException {
15394 		ColumnDefinitionContext _localctx = new ColumnDefinitionContext(_ctx, getState());
15395 		enterRule(_localctx, 324, RULE_columnDefinition);
15396 		int _la;
15397 		try {
15398 			int _alt;
15399 			enterOuterAlt(_localctx, 1);
15400 			{
15401 			setState(2397);
15402 			columnName();
15403 			setState(2398);
15404 			dataType();
15405 			setState(2402);
15406 			_errHandler.sync(this);
15407 			_alt = getInterpreter().adaptivePredict(_input,173,_ctx);
15408 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
15409 				if ( _alt==1 ) {
15410 					{
15411 					{
15412 					setState(2399);
15413 					columnDefinitionOption();
15414 					}
15415 					} 
15416 				}
15417 				setState(2404);
15418 				_errHandler.sync(this);
15419 				_alt = getInterpreter().adaptivePredict(_input,173,_ctx);
15420 			}
15421 			setState(2405);
15422 			columnConstraints();
15423 			setState(2407);
15424 			_errHandler.sync(this);
15425 			_la = _input.LA(1);
15426 			if (_la==INDEX) {
15427 				{
15428 				setState(2406);
15429 				columnIndex();
15430 				}
15431 			}
15432 
15433 			}
15434 		}
15435 		catch (RecognitionException re) {
15436 			_localctx.exception = re;
15437 			_errHandler.reportError(this, re);
15438 			_errHandler.recover(this, re);
15439 		}
15440 		finally {
15441 			exitRule();
15442 		}
15443 		return _localctx;
15444 	}
15445 
15446 	public static class ColumnDefinitionOptionContext extends ParserRuleContext {
15447 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
15448 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
15449 		public CollationNameContext collationName() {
15450 			return getRuleContext(CollationNameContext.class,0);
15451 		}
15452 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
15453 		public TerminalNode MASKED() { return getToken(SQLServerStatementParser.MASKED, 0); }
15454 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
15455 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15456 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
15457 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
15458 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
15459 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15460 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
15461 		public ExprContext expr() {
15462 			return getRuleContext(ExprContext.class,0);
15463 		}
15464 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
15465 		public IgnoredIdentifierContext ignoredIdentifier() {
15466 			return getRuleContext(IgnoredIdentifierContext.class,0);
15467 		}
15468 		public TerminalNode IDENTITY() { return getToken(SQLServerStatementParser.IDENTITY, 0); }
15469 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
15470 		public TerminalNode NUMBER_(int i) {
15471 			return getToken(SQLServerStatementParser.NUMBER_, i);
15472 		}
15473 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15474 		public TerminalNode COMMA_(int i) {
15475 			return getToken(SQLServerStatementParser.COMMA_, i);
15476 		}
15477 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
15478 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
15479 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
15480 		public TerminalNode GENERATED() { return getToken(SQLServerStatementParser.GENERATED, 0); }
15481 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
15482 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
15483 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
15484 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
15485 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
15486 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
15487 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
15488 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
15489 		public TerminalNode ENCRYPTED() { return getToken(SQLServerStatementParser.ENCRYPTED, 0); }
15490 		public EncryptedOptionsContext encryptedOptions() {
15491 			return getRuleContext(EncryptedOptionsContext.class,0);
15492 		}
15493 		public List<ColumnConstraintContext> columnConstraint() {
15494 			return getRuleContexts(ColumnConstraintContext.class);
15495 		}
15496 		public ColumnConstraintContext columnConstraint(int i) {
15497 			return getRuleContext(ColumnConstraintContext.class,i);
15498 		}
15499 		public ColumnIndexContext columnIndex() {
15500 			return getRuleContext(ColumnIndexContext.class,0);
15501 		}
15502 		public ColumnDefinitionOptionContext(ParserRuleContext parent, int invokingState) {
15503 			super(parent, invokingState);
15504 		}
15505 		@Override public int getRuleIndex() { return RULE_columnDefinitionOption; }
15506 		@Override
15507 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15508 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnDefinitionOption(this);
15509 			else return visitor.visitChildren(this);
15510 		}
15511 	}
15512 
15513 	public final ColumnDefinitionOptionContext columnDefinitionOption() throws RecognitionException {
15514 		ColumnDefinitionOptionContext _localctx = new ColumnDefinitionOptionContext(_ctx, getState());
15515 		enterRule(_localctx, 326, RULE_columnDefinitionOption);
15516 		int _la;
15517 		try {
15518 			int _alt;
15519 			setState(2462);
15520 			_errHandler.sync(this);
15521 			switch ( getInterpreter().adaptivePredict(_input,180,_ctx) ) {
15522 			case 1:
15523 				enterOuterAlt(_localctx, 1);
15524 				{
15525 				setState(2409);
15526 				match(FILESTREAM);
15527 				}
15528 				break;
15529 			case 2:
15530 				enterOuterAlt(_localctx, 2);
15531 				{
15532 				setState(2410);
15533 				match(COLLATE);
15534 				setState(2411);
15535 				collationName();
15536 				}
15537 				break;
15538 			case 3:
15539 				enterOuterAlt(_localctx, 3);
15540 				{
15541 				setState(2412);
15542 				match(SPARSE);
15543 				}
15544 				break;
15545 			case 4:
15546 				enterOuterAlt(_localctx, 4);
15547 				{
15548 				setState(2413);
15549 				match(MASKED);
15550 				setState(2414);
15551 				match(WITH);
15552 				setState(2415);
15553 				match(LP_);
15554 				setState(2416);
15555 				match(FUNCTION);
15556 				setState(2417);
15557 				match(EQ_);
15558 				setState(2418);
15559 				match(STRING_);
15560 				setState(2419);
15561 				match(RP_);
15562 				}
15563 				break;
15564 			case 5:
15565 				enterOuterAlt(_localctx, 5);
15566 				{
15567 				setState(2422);
15568 				_errHandler.sync(this);
15569 				_la = _input.LA(1);
15570 				if (_la==CONSTRAINT) {
15571 					{
15572 					setState(2420);
15573 					match(CONSTRAINT);
15574 					setState(2421);
15575 					ignoredIdentifier();
15576 					}
15577 				}
15578 
15579 				setState(2424);
15580 				match(DEFAULT);
15581 				setState(2425);
15582 				expr(0);
15583 				}
15584 				break;
15585 			case 6:
15586 				enterOuterAlt(_localctx, 6);
15587 				{
15588 				setState(2426);
15589 				match(IDENTITY);
15590 				setState(2432);
15591 				_errHandler.sync(this);
15592 				_la = _input.LA(1);
15593 				if (_la==LP_) {
15594 					{
15595 					setState(2427);
15596 					match(LP_);
15597 					setState(2428);
15598 					match(NUMBER_);
15599 					setState(2429);
15600 					match(COMMA_);
15601 					setState(2430);
15602 					match(NUMBER_);
15603 					setState(2431);
15604 					match(RP_);
15605 					}
15606 				}
15607 
15608 				}
15609 				break;
15610 			case 7:
15611 				enterOuterAlt(_localctx, 7);
15612 				{
15613 				setState(2434);
15614 				match(NOT);
15615 				setState(2435);
15616 				match(FOR);
15617 				setState(2436);
15618 				match(REPLICATION);
15619 				}
15620 				break;
15621 			case 8:
15622 				enterOuterAlt(_localctx, 8);
15623 				{
15624 				setState(2437);
15625 				match(GENERATED);
15626 				setState(2438);
15627 				match(ALWAYS);
15628 				setState(2439);
15629 				match(AS);
15630 				setState(2440);
15631 				match(ROW);
15632 				setState(2441);
15633 				_la = _input.LA(1);
15634 				if ( !(_la==START || _la==END) ) {
15635 				_errHandler.recoverInline(this);
15636 				}
15637 				else {
15638 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15639 					_errHandler.reportMatch(this);
15640 					consume();
15641 				}
15642 				setState(2443);
15643 				_errHandler.sync(this);
15644 				_la = _input.LA(1);
15645 				if (_la==HIDDEN_) {
15646 					{
15647 					setState(2442);
15648 					match(HIDDEN_);
15649 					}
15650 				}
15651 
15652 				}
15653 				break;
15654 			case 9:
15655 				enterOuterAlt(_localctx, 9);
15656 				{
15657 				setState(2446);
15658 				_errHandler.sync(this);
15659 				_la = _input.LA(1);
15660 				if (_la==NOT) {
15661 					{
15662 					setState(2445);
15663 					match(NOT);
15664 					}
15665 				}
15666 
15667 				setState(2448);
15668 				match(NULL);
15669 				}
15670 				break;
15671 			case 10:
15672 				enterOuterAlt(_localctx, 10);
15673 				{
15674 				setState(2449);
15675 				match(ROWGUIDCOL);
15676 				}
15677 				break;
15678 			case 11:
15679 				enterOuterAlt(_localctx, 11);
15680 				{
15681 				setState(2450);
15682 				match(ENCRYPTED);
15683 				setState(2451);
15684 				match(WITH);
15685 				setState(2452);
15686 				encryptedOptions();
15687 				}
15688 				break;
15689 			case 12:
15690 				enterOuterAlt(_localctx, 12);
15691 				{
15692 				setState(2453);
15693 				columnConstraint();
15694 				setState(2458);
15695 				_errHandler.sync(this);
15696 				_alt = getInterpreter().adaptivePredict(_input,179,_ctx);
15697 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
15698 					if ( _alt==1 ) {
15699 						{
15700 						{
15701 						setState(2454);
15702 						match(COMMA_);
15703 						setState(2455);
15704 						columnConstraint();
15705 						}
15706 						} 
15707 					}
15708 					setState(2460);
15709 					_errHandler.sync(this);
15710 					_alt = getInterpreter().adaptivePredict(_input,179,_ctx);
15711 				}
15712 				}
15713 				break;
15714 			case 13:
15715 				enterOuterAlt(_localctx, 13);
15716 				{
15717 				setState(2461);
15718 				columnIndex();
15719 				}
15720 				break;
15721 			}
15722 		}
15723 		catch (RecognitionException re) {
15724 			_localctx.exception = re;
15725 			_errHandler.reportError(this, re);
15726 			_errHandler.recover(this, re);
15727 		}
15728 		finally {
15729 			exitRule();
15730 		}
15731 		return _localctx;
15732 	}
15733 
15734 	public static class EncryptedOptionsContext extends ParserRuleContext {
15735 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15736 		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(SQLServerStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
15737 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
15738 		public TerminalNode EQ_(int i) {
15739 			return getToken(SQLServerStatementParser.EQ_, i);
15740 		}
15741 		public IgnoredIdentifierContext ignoredIdentifier() {
15742 			return getRuleContext(IgnoredIdentifierContext.class,0);
15743 		}
15744 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15745 		public TerminalNode COMMA_(int i) {
15746 			return getToken(SQLServerStatementParser.COMMA_, i);
15747 		}
15748 		public TerminalNode ENCRYPTION_TYPE() { return getToken(SQLServerStatementParser.ENCRYPTION_TYPE, 0); }
15749 		public TerminalNode ALGORITHM() { return getToken(SQLServerStatementParser.ALGORITHM, 0); }
15750 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
15751 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15752 		public TerminalNode DETERMINISTIC() { return getToken(SQLServerStatementParser.DETERMINISTIC, 0); }
15753 		public TerminalNode RANDOMIZED() { return getToken(SQLServerStatementParser.RANDOMIZED, 0); }
15754 		public EncryptedOptionsContext(ParserRuleContext parent, int invokingState) {
15755 			super(parent, invokingState);
15756 		}
15757 		@Override public int getRuleIndex() { return RULE_encryptedOptions; }
15758 		@Override
15759 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15760 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEncryptedOptions(this);
15761 			else return visitor.visitChildren(this);
15762 		}
15763 	}
15764 
15765 	public final EncryptedOptionsContext encryptedOptions() throws RecognitionException {
15766 		EncryptedOptionsContext _localctx = new EncryptedOptionsContext(_ctx, getState());
15767 		enterRule(_localctx, 328, RULE_encryptedOptions);
15768 		int _la;
15769 		try {
15770 			enterOuterAlt(_localctx, 1);
15771 			{
15772 			setState(2464);
15773 			match(LP_);
15774 			setState(2465);
15775 			match(COLUMN_ENCRYPTION_KEY);
15776 			setState(2466);
15777 			match(EQ_);
15778 			setState(2467);
15779 			ignoredIdentifier();
15780 			setState(2468);
15781 			match(COMMA_);
15782 			setState(2469);
15783 			match(ENCRYPTION_TYPE);
15784 			setState(2470);
15785 			match(EQ_);
15786 			setState(2471);
15787 			_la = _input.LA(1);
15788 			if ( !(_la==DETERMINISTIC || _la==RANDOMIZED) ) {
15789 			_errHandler.recoverInline(this);
15790 			}
15791 			else {
15792 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15793 				_errHandler.reportMatch(this);
15794 				consume();
15795 			}
15796 			setState(2472);
15797 			match(COMMA_);
15798 			setState(2473);
15799 			match(ALGORITHM);
15800 			setState(2474);
15801 			match(EQ_);
15802 			setState(2475);
15803 			match(STRING_);
15804 			setState(2476);
15805 			match(RP_);
15806 			}
15807 		}
15808 		catch (RecognitionException re) {
15809 			_localctx.exception = re;
15810 			_errHandler.reportError(this, re);
15811 			_errHandler.recover(this, re);
15812 		}
15813 		finally {
15814 			exitRule();
15815 		}
15816 		return _localctx;
15817 	}
15818 
15819 	public static class ColumnConstraintContext extends ParserRuleContext {
15820 		public PrimaryKeyConstraintContext primaryKeyConstraint() {
15821 			return getRuleContext(PrimaryKeyConstraintContext.class,0);
15822 		}
15823 		public ColumnForeignKeyConstraintContext columnForeignKeyConstraint() {
15824 			return getRuleContext(ColumnForeignKeyConstraintContext.class,0);
15825 		}
15826 		public CheckConstraintContext checkConstraint() {
15827 			return getRuleContext(CheckConstraintContext.class,0);
15828 		}
15829 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
15830 		public ConstraintNameContext constraintName() {
15831 			return getRuleContext(ConstraintNameContext.class,0);
15832 		}
15833 		public ColumnConstraintContext(ParserRuleContext parent, int invokingState) {
15834 			super(parent, invokingState);
15835 		}
15836 		@Override public int getRuleIndex() { return RULE_columnConstraint; }
15837 		@Override
15838 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15839 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnConstraint(this);
15840 			else return visitor.visitChildren(this);
15841 		}
15842 	}
15843 
15844 	public final ColumnConstraintContext columnConstraint() throws RecognitionException {
15845 		ColumnConstraintContext _localctx = new ColumnConstraintContext(_ctx, getState());
15846 		enterRule(_localctx, 330, RULE_columnConstraint);
15847 		int _la;
15848 		try {
15849 			enterOuterAlt(_localctx, 1);
15850 			{
15851 			setState(2480);
15852 			_errHandler.sync(this);
15853 			_la = _input.LA(1);
15854 			if (_la==CONSTRAINT) {
15855 				{
15856 				setState(2478);
15857 				match(CONSTRAINT);
15858 				setState(2479);
15859 				constraintName();
15860 				}
15861 			}
15862 
15863 			setState(2485);
15864 			_errHandler.sync(this);
15865 			switch (_input.LA(1)) {
15866 			case PRIMARY:
15867 			case UNIQUE:
15868 			case KEY:
15869 				{
15870 				setState(2482);
15871 				primaryKeyConstraint();
15872 				}
15873 				break;
15874 			case FOREIGN:
15875 			case REFERENCES:
15876 				{
15877 				setState(2483);
15878 				columnForeignKeyConstraint();
15879 				}
15880 				break;
15881 			case CHECK:
15882 				{
15883 				setState(2484);
15884 				checkConstraint();
15885 				}
15886 				break;
15887 			default:
15888 				throw new NoViableAltException(this);
15889 			}
15890 			}
15891 		}
15892 		catch (RecognitionException re) {
15893 			_localctx.exception = re;
15894 			_errHandler.reportError(this, re);
15895 			_errHandler.recover(this, re);
15896 		}
15897 		finally {
15898 			exitRule();
15899 		}
15900 		return _localctx;
15901 	}
15902 
15903 	public static class ComputedColumnConstraintContext extends ParserRuleContext {
15904 		public PrimaryKeyConstraintContext primaryKeyConstraint() {
15905 			return getRuleContext(PrimaryKeyConstraintContext.class,0);
15906 		}
15907 		public ComputedColumnForeignKeyConstraintContext computedColumnForeignKeyConstraint() {
15908 			return getRuleContext(ComputedColumnForeignKeyConstraintContext.class,0);
15909 		}
15910 		public CheckConstraintContext checkConstraint() {
15911 			return getRuleContext(CheckConstraintContext.class,0);
15912 		}
15913 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
15914 		public ConstraintNameContext constraintName() {
15915 			return getRuleContext(ConstraintNameContext.class,0);
15916 		}
15917 		public ComputedColumnConstraintContext(ParserRuleContext parent, int invokingState) {
15918 			super(parent, invokingState);
15919 		}
15920 		@Override public int getRuleIndex() { return RULE_computedColumnConstraint; }
15921 		@Override
15922 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15923 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnConstraint(this);
15924 			else return visitor.visitChildren(this);
15925 		}
15926 	}
15927 
15928 	public final ComputedColumnConstraintContext computedColumnConstraint() throws RecognitionException {
15929 		ComputedColumnConstraintContext _localctx = new ComputedColumnConstraintContext(_ctx, getState());
15930 		enterRule(_localctx, 332, RULE_computedColumnConstraint);
15931 		int _la;
15932 		try {
15933 			enterOuterAlt(_localctx, 1);
15934 			{
15935 			setState(2489);
15936 			_errHandler.sync(this);
15937 			_la = _input.LA(1);
15938 			if (_la==CONSTRAINT) {
15939 				{
15940 				setState(2487);
15941 				match(CONSTRAINT);
15942 				setState(2488);
15943 				constraintName();
15944 				}
15945 			}
15946 
15947 			setState(2494);
15948 			_errHandler.sync(this);
15949 			switch (_input.LA(1)) {
15950 			case PRIMARY:
15951 			case UNIQUE:
15952 			case KEY:
15953 				{
15954 				setState(2491);
15955 				primaryKeyConstraint();
15956 				}
15957 				break;
15958 			case TRUNCATE:
15959 			case SCHEMA:
15960 			case COLUMNS:
15961 			case FOREIGN:
15962 			case PRECISION:
15963 			case FUNCTION:
15964 			case TRIGGER:
15965 			case CAST:
15966 			case SUBSTRING:
15967 			case OFF:
15968 			case GROUP:
15969 			case LIMIT:
15970 			case OFFSET:
15971 			case SAVEPOINT:
15972 			case BOOLEAN:
15973 			case ARRAY:
15974 			case DATE:
15975 			case LOCALTIME:
15976 			case LOCALTIMESTAMP:
15977 			case QUARTER:
15978 			case MONTH:
15979 			case WEEK:
15980 			case DAY:
15981 			case SECOND:
15982 			case MICROSECOND:
15983 			case MAX:
15984 			case MIN:
15985 			case SUM:
15986 			case COUNT:
15987 			case AVG:
15988 			case ENABLE:
15989 			case DISABLE:
15990 			case INSTANCE:
15991 			case DO:
15992 			case DEFINER:
15993 			case SQL:
15994 			case CASCADED:
15995 			case LOCAL:
15996 			case NEXT:
15997 			case NAME:
15998 			case INTEGER:
15999 			case TYPE:
16000 			case TEXT:
16001 			case VIEWS:
16002 			case READ_ONLY:
16003 			case DATABASE:
16004 			case RETURNS:
16005 			case DATEPART:
16006 			case PASSWORD:
16007 			case BINARY:
16008 			case HIDDEN_:
16009 			case MOD:
16010 			case PARTITION:
16011 			case PARTITIONS:
16012 			case TOP:
16013 			case ROW:
16014 			case ROWS:
16015 			case XOR:
16016 			case ALWAYS:
16017 			case ROLE:
16018 			case START:
16019 			case ALGORITHM:
16020 			case AUTO:
16021 			case BLOCKERS:
16022 			case CLUSTERED:
16023 			case NONCLUSTERED:
16024 			case COLUMNSTORE:
16025 			case CONTENT:
16026 			case YEARS:
16027 			case MONTHS:
16028 			case WEEKS:
16029 			case DAYS:
16030 			case MINUTES:
16031 			case DENY:
16032 			case DETERMINISTIC:
16033 			case DISTRIBUTION:
16034 			case DOCUMENT:
16035 			case DURABILITY:
16036 			case ENCRYPTED:
16037 			case FILESTREAM:
16038 			case FILETABLE:
16039 			case FILLFACTOR:
16040 			case FOLLOWING:
16041 			case HASH:
16042 			case HEAP:
16043 			case INBOUND:
16044 			case OUTBOUND:
16045 			case UNBOUNDED:
16046 			case INFINITE:
16047 			case LOGIN:
16048 			case MASKED:
16049 			case MAXDOP:
16050 			case MOVE:
16051 			case NOCHECK:
16052 			case OBJECT:
16053 			case ONLINE:
16054 			case OVER:
16055 			case PAGE:
16056 			case PAUSED:
16057 			case PERIOD:
16058 			case PERSISTED:
16059 			case PRECEDING:
16060 			case RANDOMIZED:
16061 			case RANGE:
16062 			case REBUILD:
16063 			case REPLICATE:
16064 			case REPLICATION:
16065 			case RESUMABLE:
16066 			case ROWGUIDCOL:
16067 			case SAVE:
16068 			case SELF:
16069 			case SPARSE:
16070 			case SWITCH:
16071 			case TRAN:
16072 			case TRANCOUNT:
16073 			case CONTROL:
16074 			case CONCAT:
16075 			case TAKE:
16076 			case OWNERSHIP:
16077 			case DEFINITION:
16078 			case APPLICATION:
16079 			case ASSEMBLY:
16080 			case SYMMETRIC:
16081 			case ASYMMETRIC:
16082 			case SERVER:
16083 			case RECEIVE:
16084 			case CHANGE:
16085 			case TRACE:
16086 			case TRACKING:
16087 			case RESOURCES:
16088 			case SETTINGS:
16089 			case STATE:
16090 			case AVAILABILITY:
16091 			case CREDENTIAL:
16092 			case ENDPOINT:
16093 			case EVENT:
16094 			case NOTIFICATION:
16095 			case LINKED:
16096 			case AUDIT:
16097 			case DDL:
16098 			case XML:
16099 			case IMPERSONATE:
16100 			case SECURABLES:
16101 			case AUTHENTICATE:
16102 			case EXTERNAL:
16103 			case ACCESS:
16104 			case ADMINISTER:
16105 			case BULK:
16106 			case OPERATIONS:
16107 			case UNSAFE:
16108 			case SHUTDOWN:
16109 			case SCOPED:
16110 			case CONFIGURATION:
16111 			case DATASPACE:
16112 			case SERVICE:
16113 			case CERTIFICATE:
16114 			case CONTRACT:
16115 			case ENCRYPTION:
16116 			case MASTER:
16117 			case DATA:
16118 			case SOURCE:
16119 			case FILE:
16120 			case FORMAT:
16121 			case LIBRARY:
16122 			case FULLTEXT:
16123 			case MASK:
16124 			case UNMASK:
16125 			case MESSAGE:
16126 			case REMOTE:
16127 			case BINDING:
16128 			case ROUTE:
16129 			case SECURITY:
16130 			case POLICY:
16131 			case AGGREGATE:
16132 			case QUEUE:
16133 			case RULE:
16134 			case SYNONYM:
16135 			case COLLECTION:
16136 			case SCRIPT:
16137 			case KILL:
16138 			case BACKUP:
16139 			case LOG:
16140 			case SHOWPLAN:
16141 			case SUBSCRIBE:
16142 			case QUERY:
16143 			case NOTIFICATIONS:
16144 			case CHECKPOINT:
16145 			case SEQUENCE:
16146 			case ABORT_AFTER_WAIT:
16147 			case ALLOW_PAGE_LOCKS:
16148 			case ALLOW_ROW_LOCKS:
16149 			case ALL_SPARSE_COLUMNS:
16150 			case BUCKET_COUNT:
16151 			case COLUMNSTORE_ARCHIVE:
16152 			case COLUMN_ENCRYPTION_KEY:
16153 			case COLUMN_SET:
16154 			case COMPRESSION_DELAY:
16155 			case DATABASE_DEAULT:
16156 			case DATA_COMPRESSION:
16157 			case DATA_CONSISTENCY_CHECK:
16158 			case ENCRYPTION_TYPE:
16159 			case SYSTEM_TIME:
16160 			case SYSTEM_VERSIONING:
16161 			case TEXTIMAGE_ON:
16162 			case WAIT_AT_LOW_PRIORITY:
16163 			case STATISTICS_INCREMENTAL:
16164 			case STATISTICS_NORECOMPUTE:
16165 			case ROUND_ROBIN:
16166 			case SCHEMA_AND_DATA:
16167 			case SCHEMA_ONLY:
16168 			case SORT_IN_TEMPDB:
16169 			case IGNORE_DUP_KEY:
16170 			case IMPLICIT_TRANSACTIONS:
16171 			case MAX_DURATION:
16172 			case MEMORY_OPTIMIZED:
16173 			case MIGRATION_STATE:
16174 			case PAD_INDEX:
16175 			case REMOTE_DATA_ARCHIVE:
16176 			case FILESTREAM_ON:
16177 			case FILETABLE_COLLATE_FILENAME:
16178 			case FILETABLE_DIRECTORY:
16179 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
16180 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
16181 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
16182 			case FILTER_PREDICATE:
16183 			case HISTORY_RETENTION_PERIOD:
16184 			case HISTORY_TABLE:
16185 			case LOCK_ESCALATION:
16186 			case DROP_EXISTING:
16187 			case ROW_NUMBER:
16188 			case FIRST:
16189 			case DATETIME2:
16190 			case OUTPUT:
16191 			case INSERTED:
16192 			case DELETED:
16193 			case FILENAME:
16194 			case SIZE:
16195 			case MAXSIZE:
16196 			case FILEGROWTH:
16197 			case UNLIMITED:
16198 			case KB:
16199 			case MB:
16200 			case GB:
16201 			case TB:
16202 			case CONTAINS:
16203 			case MEMORY_OPTIMIZED_DATA:
16204 			case FILEGROUP:
16205 			case NON_TRANSACTED_ACCESS:
16206 			case DB_CHAINING:
16207 			case TRUSTWORTHY:
16208 			case FORWARD_ONLY:
16209 			case KEYSET:
16210 			case FAST_FORWARD:
16211 			case SCROLL_LOCKS:
16212 			case OPTIMISTIC:
16213 			case TYPE_WARNING:
16214 			case SCHEMABINDING:
16215 			case CALLER:
16216 			case OWNER:
16217 			case SNAPSHOT:
16218 			case REPEATABLE:
16219 			case SERIALIZABLE:
16220 			case NATIVE_COMPILATION:
16221 			case VIEW_METADATA:
16222 			case INSTEAD:
16223 			case APPEND:
16224 			case INCREMENT:
16225 			case CACHE:
16226 			case MINVALUE:
16227 			case MAXVALUE:
16228 			case RESTART:
16229 			case LOB_COMPACTION:
16230 			case COMPRESS_ALL_ROW_GROUPS:
16231 			case REORGANIZE:
16232 			case RESUME:
16233 			case PAUSE:
16234 			case ABORT:
16235 			case ACCELERATED_DATABASE_RECOVERY:
16236 			case PERSISTENT_VERSION_STORE_FILEGROUP:
16237 			case IMMEDIATE:
16238 			case NO_WAIT:
16239 			case TARGET_RECOVERY_TIME:
16240 			case SECONDS:
16241 			case HONOR_BROKER_PRIORITY:
16242 			case ERROR_BROKER_CONVERSATIONS:
16243 			case NEW_BROKER:
16244 			case DISABLE_BROKER:
16245 			case ENABLE_BROKER:
16246 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
16247 			case READ_COMMITTED_SNAPSHOT:
16248 			case ALLOW_SNAPSHOT_ISOLATION:
16249 			case RECURSIVE_TRIGGERS:
16250 			case QUOTED_IDENTIFIER:
16251 			case NUMERIC_ROUNDABORT:
16252 			case CONCAT_NULL_YIELDS_NULL:
16253 			case COMPATIBILITY_LEVEL:
16254 			case ARITHABORT:
16255 			case ANSI_WARNINGS:
16256 			case ANSI_PADDING:
16257 			case ANSI_NULLS:
16258 			case ANSI_NULL_DEFAULT:
16259 			case PAGE_VERIFY:
16260 			case CHECKSUM:
16261 			case TORN_PAGE_DETECTION:
16262 			case BULK_LOGGED:
16263 			case RECOVERY:
16264 			case TOTAL_EXECUTION_CPU_TIME_MS:
16265 			case TOTAL_COMPILE_CPU_TIME_MS:
16266 			case STALE_CAPTURE_POLICY_THRESHOLD:
16267 			case EXECUTION_COUNT:
16268 			case QUERY_CAPTURE_POLICY:
16269 			case WAIT_STATS_CAPTURE_MODE:
16270 			case MAX_PLANS_PER_QUERY:
16271 			case QUERY_CAPTURE_MODE:
16272 			case SIZE_BASED_CLEANUP_MODE:
16273 			case INTERVAL_LENGTH_MINUTES:
16274 			case MAX_STORAGE_SIZE_MB:
16275 			case DATA_FLUSH_INTERVAL_SECONDS:
16276 			case CLEANUP_POLICY:
16277 			case CUSTOM:
16278 			case STALE_QUERY_THRESHOLD_DAYS:
16279 			case OPERATION_MODE:
16280 			case QUERY_STORE:
16281 			case CURSOR_DEFAULT:
16282 			case GLOBAL:
16283 			case CURSOR_CLOSE_ON_COMMIT:
16284 			case HOURS:
16285 			case CHANGE_RETENTION:
16286 			case AUTO_CLEANUP:
16287 			case CHANGE_TRACKING:
16288 			case AUTOMATIC_TUNING:
16289 			case FORCE_LAST_GOOD_PLAN:
16290 			case AUTO_UPDATE_STATISTICS_ASYNC:
16291 			case AUTO_UPDATE_STATISTICS:
16292 			case AUTO_SHRINK:
16293 			case AUTO_CREATE_STATISTICS:
16294 			case INCREMENTAL:
16295 			case AUTO_CLOSE:
16296 			case DATA_RETENTION:
16297 			case TEMPORAL_HISTORY_RETENTION:
16298 			case EDITION:
16299 			case MIXED_PAGE_ALLOCATION:
16300 			case DISABLED:
16301 			case ALLOWED:
16302 			case HADR:
16303 			case MULTI_USER:
16304 			case RESTRICTED_USER:
16305 			case SINGLE_USER:
16306 			case OFFLINE:
16307 			case EMERGENCY:
16308 			case SUSPEND:
16309 			case DATE_CORRELATION_OPTIMIZATION:
16310 			case ELASTIC_POOL:
16311 			case SERVICE_OBJECTIVE:
16312 			case DATABASE_NAME:
16313 			case ALLOW_CONNECTIONS:
16314 			case GEO:
16315 			case NAMED:
16316 			case DATEFIRST:
16317 			case BACKUP_STORAGE_REDUNDANCY:
16318 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
16319 			case SECONDARY:
16320 			case FAILOVER:
16321 			case DEFAULT_FULLTEXT_LANGUAGE:
16322 			case DEFAULT_LANGUAGE:
16323 			case INLINE:
16324 			case NESTED_TRIGGERS:
16325 			case TRANSFORM_NOISE_WORDS:
16326 			case TWO_DIGIT_YEAR_CUTOFF:
16327 			case PERSISTENT_LOG_BUFFER:
16328 			case DIRECTORY_NAME:
16329 			case DATEFORMAT:
16330 			case DELAYED_DURABILITY:
16331 			case AUTHORIZATION:
16332 			case TRANSFER:
16333 			case PROVIDER:
16334 			case SEARCH:
16335 			case MEMBER:
16336 			case IDENTIFIER_:
16337 			case DELIMITED_IDENTIFIER_:
16338 				{
16339 				setState(2492);
16340 				computedColumnForeignKeyConstraint();
16341 				}
16342 				break;
16343 			case CHECK:
16344 				{
16345 				setState(2493);
16346 				checkConstraint();
16347 				}
16348 				break;
16349 			default:
16350 				throw new NoViableAltException(this);
16351 			}
16352 			}
16353 		}
16354 		catch (RecognitionException re) {
16355 			_localctx.exception = re;
16356 			_errHandler.reportError(this, re);
16357 			_errHandler.recover(this, re);
16358 		}
16359 		finally {
16360 			exitRule();
16361 		}
16362 		return _localctx;
16363 	}
16364 
16365 	public static class ComputedColumnForeignKeyConstraintContext extends ParserRuleContext {
16366 		public TableNameContext tableName() {
16367 			return getRuleContext(TableNameContext.class,0);
16368 		}
16369 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
16370 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
16371 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16372 		public ColumnNameContext columnName() {
16373 			return getRuleContext(ColumnNameContext.class,0);
16374 		}
16375 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16376 		public List<ComputedColumnForeignKeyOnActionContext> computedColumnForeignKeyOnAction() {
16377 			return getRuleContexts(ComputedColumnForeignKeyOnActionContext.class);
16378 		}
16379 		public ComputedColumnForeignKeyOnActionContext computedColumnForeignKeyOnAction(int i) {
16380 			return getRuleContext(ComputedColumnForeignKeyOnActionContext.class,i);
16381 		}
16382 		public ComputedColumnForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
16383 			super(parent, invokingState);
16384 		}
16385 		@Override public int getRuleIndex() { return RULE_computedColumnForeignKeyConstraint; }
16386 		@Override
16387 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16388 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnForeignKeyConstraint(this);
16389 			else return visitor.visitChildren(this);
16390 		}
16391 	}
16392 
16393 	public final ComputedColumnForeignKeyConstraintContext computedColumnForeignKeyConstraint() throws RecognitionException {
16394 		ComputedColumnForeignKeyConstraintContext _localctx = new ComputedColumnForeignKeyConstraintContext(_ctx, getState());
16395 		enterRule(_localctx, 334, RULE_computedColumnForeignKeyConstraint);
16396 		int _la;
16397 		try {
16398 			enterOuterAlt(_localctx, 1);
16399 			{
16400 			setState(2498);
16401 			_errHandler.sync(this);
16402 			_la = _input.LA(1);
16403 			if (_la==FOREIGN) {
16404 				{
16405 				setState(2496);
16406 				match(FOREIGN);
16407 				setState(2497);
16408 				match(KEY);
16409 				}
16410 			}
16411 
16412 			setState(2500);
16413 			tableName();
16414 			setState(2505);
16415 			_errHandler.sync(this);
16416 			switch ( getInterpreter().adaptivePredict(_input,186,_ctx) ) {
16417 			case 1:
16418 				{
16419 				setState(2501);
16420 				match(LP_);
16421 				setState(2502);
16422 				columnName();
16423 				setState(2503);
16424 				match(RP_);
16425 				}
16426 				break;
16427 			}
16428 			setState(2510);
16429 			_errHandler.sync(this);
16430 			_la = _input.LA(1);
16431 			while (_la==ON || _la==NOT) {
16432 				{
16433 				{
16434 				setState(2507);
16435 				computedColumnForeignKeyOnAction();
16436 				}
16437 				}
16438 				setState(2512);
16439 				_errHandler.sync(this);
16440 				_la = _input.LA(1);
16441 			}
16442 			}
16443 		}
16444 		catch (RecognitionException re) {
16445 			_localctx.exception = re;
16446 			_errHandler.reportError(this, re);
16447 			_errHandler.recover(this, re);
16448 		}
16449 		finally {
16450 			exitRule();
16451 		}
16452 		return _localctx;
16453 	}
16454 
16455 	public static class ComputedColumnForeignKeyOnActionContext extends ParserRuleContext {
16456 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
16457 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
16458 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
16459 		public TerminalNode ACTION() { return getToken(SQLServerStatementParser.ACTION, 0); }
16460 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
16461 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
16462 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
16463 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
16464 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
16465 		public ComputedColumnForeignKeyOnActionContext(ParserRuleContext parent, int invokingState) {
16466 			super(parent, invokingState);
16467 		}
16468 		@Override public int getRuleIndex() { return RULE_computedColumnForeignKeyOnAction; }
16469 		@Override
16470 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16471 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnForeignKeyOnAction(this);
16472 			else return visitor.visitChildren(this);
16473 		}
16474 	}
16475 
16476 	public final ComputedColumnForeignKeyOnActionContext computedColumnForeignKeyOnAction() throws RecognitionException {
16477 		ComputedColumnForeignKeyOnActionContext _localctx = new ComputedColumnForeignKeyOnActionContext(_ctx, getState());
16478 		enterRule(_localctx, 336, RULE_computedColumnForeignKeyOnAction);
16479 		try {
16480 			setState(2527);
16481 			_errHandler.sync(this);
16482 			switch ( getInterpreter().adaptivePredict(_input,189,_ctx) ) {
16483 			case 1:
16484 				enterOuterAlt(_localctx, 1);
16485 				{
16486 				setState(2513);
16487 				match(ON);
16488 				setState(2514);
16489 				match(DELETE);
16490 				setState(2518);
16491 				_errHandler.sync(this);
16492 				switch (_input.LA(1)) {
16493 				case NO:
16494 					{
16495 					setState(2515);
16496 					match(NO);
16497 					setState(2516);
16498 					match(ACTION);
16499 					}
16500 					break;
16501 				case CASCADE:
16502 					{
16503 					setState(2517);
16504 					match(CASCADE);
16505 					}
16506 					break;
16507 				default:
16508 					throw new NoViableAltException(this);
16509 				}
16510 				}
16511 				break;
16512 			case 2:
16513 				enterOuterAlt(_localctx, 2);
16514 				{
16515 				setState(2520);
16516 				match(ON);
16517 				setState(2521);
16518 				match(UPDATE);
16519 				setState(2522);
16520 				match(NO);
16521 				setState(2523);
16522 				match(ACTION);
16523 				}
16524 				break;
16525 			case 3:
16526 				enterOuterAlt(_localctx, 3);
16527 				{
16528 				setState(2524);
16529 				match(NOT);
16530 				setState(2525);
16531 				match(FOR);
16532 				setState(2526);
16533 				match(REPLICATION);
16534 				}
16535 				break;
16536 			}
16537 		}
16538 		catch (RecognitionException re) {
16539 			_localctx.exception = re;
16540 			_errHandler.reportError(this, re);
16541 			_errHandler.recover(this, re);
16542 		}
16543 		finally {
16544 			exitRule();
16545 		}
16546 		return _localctx;
16547 	}
16548 
16549 	public static class PrimaryKeyConstraintContext extends ParserRuleContext {
16550 		public PrimaryKeyContext primaryKey() {
16551 			return getRuleContext(PrimaryKeyContext.class,0);
16552 		}
16553 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
16554 		public DiskTablePrimaryKeyConstraintOptionContext diskTablePrimaryKeyConstraintOption() {
16555 			return getRuleContext(DiskTablePrimaryKeyConstraintOptionContext.class,0);
16556 		}
16557 		public MemoryTablePrimaryKeyConstraintOptionContext memoryTablePrimaryKeyConstraintOption() {
16558 			return getRuleContext(MemoryTablePrimaryKeyConstraintOptionContext.class,0);
16559 		}
16560 		public PrimaryKeyConstraintContext(ParserRuleContext parent, int invokingState) {
16561 			super(parent, invokingState);
16562 		}
16563 		@Override public int getRuleIndex() { return RULE_primaryKeyConstraint; }
16564 		@Override
16565 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16566 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyConstraint(this);
16567 			else return visitor.visitChildren(this);
16568 		}
16569 	}
16570 
16571 	public final PrimaryKeyConstraintContext primaryKeyConstraint() throws RecognitionException {
16572 		PrimaryKeyConstraintContext _localctx = new PrimaryKeyConstraintContext(_ctx, getState());
16573 		enterRule(_localctx, 338, RULE_primaryKeyConstraint);
16574 		try {
16575 			enterOuterAlt(_localctx, 1);
16576 			{
16577 			setState(2531);
16578 			_errHandler.sync(this);
16579 			switch (_input.LA(1)) {
16580 			case PRIMARY:
16581 			case KEY:
16582 				{
16583 				setState(2529);
16584 				primaryKey();
16585 				}
16586 				break;
16587 			case UNIQUE:
16588 				{
16589 				setState(2530);
16590 				match(UNIQUE);
16591 				}
16592 				break;
16593 			default:
16594 				throw new NoViableAltException(this);
16595 			}
16596 			setState(2535);
16597 			_errHandler.sync(this);
16598 			switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) {
16599 			case 1:
16600 				{
16601 				setState(2533);
16602 				diskTablePrimaryKeyConstraintOption();
16603 				}
16604 				break;
16605 			case 2:
16606 				{
16607 				setState(2534);
16608 				memoryTablePrimaryKeyConstraintOption();
16609 				}
16610 				break;
16611 			}
16612 			}
16613 		}
16614 		catch (RecognitionException re) {
16615 			_localctx.exception = re;
16616 			_errHandler.reportError(this, re);
16617 			_errHandler.recover(this, re);
16618 		}
16619 		finally {
16620 			exitRule();
16621 		}
16622 		return _localctx;
16623 	}
16624 
16625 	public static class DiskTablePrimaryKeyConstraintOptionContext extends ParserRuleContext {
16626 		public ClusterOptionContext clusterOption() {
16627 			return getRuleContext(ClusterOptionContext.class,0);
16628 		}
16629 		public PrimaryKeyWithClauseContext primaryKeyWithClause() {
16630 			return getRuleContext(PrimaryKeyWithClauseContext.class,0);
16631 		}
16632 		public PrimaryKeyOnClauseContext primaryKeyOnClause() {
16633 			return getRuleContext(PrimaryKeyOnClauseContext.class,0);
16634 		}
16635 		public DiskTablePrimaryKeyConstraintOptionContext(ParserRuleContext parent, int invokingState) {
16636 			super(parent, invokingState);
16637 		}
16638 		@Override public int getRuleIndex() { return RULE_diskTablePrimaryKeyConstraintOption; }
16639 		@Override
16640 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16641 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDiskTablePrimaryKeyConstraintOption(this);
16642 			else return visitor.visitChildren(this);
16643 		}
16644 	}
16645 
16646 	public final DiskTablePrimaryKeyConstraintOptionContext diskTablePrimaryKeyConstraintOption() throws RecognitionException {
16647 		DiskTablePrimaryKeyConstraintOptionContext _localctx = new DiskTablePrimaryKeyConstraintOptionContext(_ctx, getState());
16648 		enterRule(_localctx, 340, RULE_diskTablePrimaryKeyConstraintOption);
16649 		int _la;
16650 		try {
16651 			enterOuterAlt(_localctx, 1);
16652 			{
16653 			setState(2538);
16654 			_errHandler.sync(this);
16655 			_la = _input.LA(1);
16656 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
16657 				{
16658 				setState(2537);
16659 				clusterOption();
16660 				}
16661 			}
16662 
16663 			setState(2541);
16664 			_errHandler.sync(this);
16665 			switch ( getInterpreter().adaptivePredict(_input,193,_ctx) ) {
16666 			case 1:
16667 				{
16668 				setState(2540);
16669 				primaryKeyWithClause();
16670 				}
16671 				break;
16672 			}
16673 			setState(2544);
16674 			_errHandler.sync(this);
16675 			_la = _input.LA(1);
16676 			if (_la==ON) {
16677 				{
16678 				setState(2543);
16679 				primaryKeyOnClause();
16680 				}
16681 			}
16682 
16683 			}
16684 		}
16685 		catch (RecognitionException re) {
16686 			_localctx.exception = re;
16687 			_errHandler.reportError(this, re);
16688 			_errHandler.recover(this, re);
16689 		}
16690 		finally {
16691 			exitRule();
16692 		}
16693 		return _localctx;
16694 	}
16695 
16696 	public static class ClusterOptionContext extends ParserRuleContext {
16697 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
16698 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
16699 		public ClusterOptionContext(ParserRuleContext parent, int invokingState) {
16700 			super(parent, invokingState);
16701 		}
16702 		@Override public int getRuleIndex() { return RULE_clusterOption; }
16703 		@Override
16704 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16705 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClusterOption(this);
16706 			else return visitor.visitChildren(this);
16707 		}
16708 	}
16709 
16710 	public final ClusterOptionContext clusterOption() throws RecognitionException {
16711 		ClusterOptionContext _localctx = new ClusterOptionContext(_ctx, getState());
16712 		enterRule(_localctx, 342, RULE_clusterOption);
16713 		int _la;
16714 		try {
16715 			enterOuterAlt(_localctx, 1);
16716 			{
16717 			setState(2546);
16718 			_la = _input.LA(1);
16719 			if ( !(_la==CLUSTERED || _la==NONCLUSTERED) ) {
16720 			_errHandler.recoverInline(this);
16721 			}
16722 			else {
16723 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16724 				_errHandler.reportMatch(this);
16725 				consume();
16726 			}
16727 			}
16728 		}
16729 		catch (RecognitionException re) {
16730 			_localctx.exception = re;
16731 			_errHandler.reportError(this, re);
16732 			_errHandler.recover(this, re);
16733 		}
16734 		finally {
16735 			exitRule();
16736 		}
16737 		return _localctx;
16738 	}
16739 
16740 	public static class PrimaryKeyWithClauseContext extends ParserRuleContext {
16741 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
16742 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
16743 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
16744 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
16745 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16746 		public List<IndexOptionContext> indexOption() {
16747 			return getRuleContexts(IndexOptionContext.class);
16748 		}
16749 		public IndexOptionContext indexOption(int i) {
16750 			return getRuleContext(IndexOptionContext.class,i);
16751 		}
16752 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16753 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
16754 		public TerminalNode COMMA_(int i) {
16755 			return getToken(SQLServerStatementParser.COMMA_, i);
16756 		}
16757 		public PrimaryKeyWithClauseContext(ParserRuleContext parent, int invokingState) {
16758 			super(parent, invokingState);
16759 		}
16760 		@Override public int getRuleIndex() { return RULE_primaryKeyWithClause; }
16761 		@Override
16762 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16763 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyWithClause(this);
16764 			else return visitor.visitChildren(this);
16765 		}
16766 	}
16767 
16768 	public final PrimaryKeyWithClauseContext primaryKeyWithClause() throws RecognitionException {
16769 		PrimaryKeyWithClauseContext _localctx = new PrimaryKeyWithClauseContext(_ctx, getState());
16770 		enterRule(_localctx, 344, RULE_primaryKeyWithClause);
16771 		int _la;
16772 		try {
16773 			enterOuterAlt(_localctx, 1);
16774 			{
16775 			setState(2548);
16776 			match(WITH);
16777 			setState(2563);
16778 			_errHandler.sync(this);
16779 			switch (_input.LA(1)) {
16780 			case FILLFACTOR:
16781 				{
16782 				setState(2549);
16783 				match(FILLFACTOR);
16784 				setState(2550);
16785 				match(EQ_);
16786 				setState(2551);
16787 				match(NUMBER_);
16788 				}
16789 				break;
16790 			case LP_:
16791 				{
16792 				setState(2552);
16793 				match(LP_);
16794 				setState(2553);
16795 				indexOption();
16796 				setState(2558);
16797 				_errHandler.sync(this);
16798 				_la = _input.LA(1);
16799 				while (_la==COMMA_) {
16800 					{
16801 					{
16802 					setState(2554);
16803 					match(COMMA_);
16804 					setState(2555);
16805 					indexOption();
16806 					}
16807 					}
16808 					setState(2560);
16809 					_errHandler.sync(this);
16810 					_la = _input.LA(1);
16811 				}
16812 				setState(2561);
16813 				match(RP_);
16814 				}
16815 				break;
16816 			default:
16817 				throw new NoViableAltException(this);
16818 			}
16819 			}
16820 		}
16821 		catch (RecognitionException re) {
16822 			_localctx.exception = re;
16823 			_errHandler.reportError(this, re);
16824 			_errHandler.recover(this, re);
16825 		}
16826 		finally {
16827 			exitRule();
16828 		}
16829 		return _localctx;
16830 	}
16831 
16832 	public static class PrimaryKeyOnClauseContext extends ParserRuleContext {
16833 		public OnSchemaColumnContext onSchemaColumn() {
16834 			return getRuleContext(OnSchemaColumnContext.class,0);
16835 		}
16836 		public OnFileGroupContext onFileGroup() {
16837 			return getRuleContext(OnFileGroupContext.class,0);
16838 		}
16839 		public OnStringContext onString() {
16840 			return getRuleContext(OnStringContext.class,0);
16841 		}
16842 		public PrimaryKeyOnClauseContext(ParserRuleContext parent, int invokingState) {
16843 			super(parent, invokingState);
16844 		}
16845 		@Override public int getRuleIndex() { return RULE_primaryKeyOnClause; }
16846 		@Override
16847 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16848 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyOnClause(this);
16849 			else return visitor.visitChildren(this);
16850 		}
16851 	}
16852 
16853 	public final PrimaryKeyOnClauseContext primaryKeyOnClause() throws RecognitionException {
16854 		PrimaryKeyOnClauseContext _localctx = new PrimaryKeyOnClauseContext(_ctx, getState());
16855 		enterRule(_localctx, 346, RULE_primaryKeyOnClause);
16856 		try {
16857 			setState(2568);
16858 			_errHandler.sync(this);
16859 			switch ( getInterpreter().adaptivePredict(_input,197,_ctx) ) {
16860 			case 1:
16861 				enterOuterAlt(_localctx, 1);
16862 				{
16863 				setState(2565);
16864 				onSchemaColumn();
16865 				}
16866 				break;
16867 			case 2:
16868 				enterOuterAlt(_localctx, 2);
16869 				{
16870 				setState(2566);
16871 				onFileGroup();
16872 				}
16873 				break;
16874 			case 3:
16875 				enterOuterAlt(_localctx, 3);
16876 				{
16877 				setState(2567);
16878 				onString();
16879 				}
16880 				break;
16881 			}
16882 		}
16883 		catch (RecognitionException re) {
16884 			_localctx.exception = re;
16885 			_errHandler.reportError(this, re);
16886 			_errHandler.recover(this, re);
16887 		}
16888 		finally {
16889 			exitRule();
16890 		}
16891 		return _localctx;
16892 	}
16893 
16894 	public static class OnSchemaColumnContext extends ParserRuleContext {
16895 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
16896 		public SchemaNameContext schemaName() {
16897 			return getRuleContext(SchemaNameContext.class,0);
16898 		}
16899 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16900 		public ColumnNameContext columnName() {
16901 			return getRuleContext(ColumnNameContext.class,0);
16902 		}
16903 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16904 		public OnSchemaColumnContext(ParserRuleContext parent, int invokingState) {
16905 			super(parent, invokingState);
16906 		}
16907 		@Override public int getRuleIndex() { return RULE_onSchemaColumn; }
16908 		@Override
16909 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16910 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnSchemaColumn(this);
16911 			else return visitor.visitChildren(this);
16912 		}
16913 	}
16914 
16915 	public final OnSchemaColumnContext onSchemaColumn() throws RecognitionException {
16916 		OnSchemaColumnContext _localctx = new OnSchemaColumnContext(_ctx, getState());
16917 		enterRule(_localctx, 348, RULE_onSchemaColumn);
16918 		try {
16919 			enterOuterAlt(_localctx, 1);
16920 			{
16921 			setState(2570);
16922 			match(ON);
16923 			setState(2571);
16924 			schemaName();
16925 			setState(2572);
16926 			match(LP_);
16927 			setState(2573);
16928 			columnName();
16929 			setState(2574);
16930 			match(RP_);
16931 			}
16932 		}
16933 		catch (RecognitionException re) {
16934 			_localctx.exception = re;
16935 			_errHandler.reportError(this, re);
16936 			_errHandler.recover(this, re);
16937 		}
16938 		finally {
16939 			exitRule();
16940 		}
16941 		return _localctx;
16942 	}
16943 
16944 	public static class OnFileGroupContext extends ParserRuleContext {
16945 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
16946 		public IgnoredIdentifierContext ignoredIdentifier() {
16947 			return getRuleContext(IgnoredIdentifierContext.class,0);
16948 		}
16949 		public OnFileGroupContext(ParserRuleContext parent, int invokingState) {
16950 			super(parent, invokingState);
16951 		}
16952 		@Override public int getRuleIndex() { return RULE_onFileGroup; }
16953 		@Override
16954 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16955 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnFileGroup(this);
16956 			else return visitor.visitChildren(this);
16957 		}
16958 	}
16959 
16960 	public final OnFileGroupContext onFileGroup() throws RecognitionException {
16961 		OnFileGroupContext _localctx = new OnFileGroupContext(_ctx, getState());
16962 		enterRule(_localctx, 350, RULE_onFileGroup);
16963 		try {
16964 			enterOuterAlt(_localctx, 1);
16965 			{
16966 			setState(2576);
16967 			match(ON);
16968 			setState(2577);
16969 			ignoredIdentifier();
16970 			}
16971 		}
16972 		catch (RecognitionException re) {
16973 			_localctx.exception = re;
16974 			_errHandler.reportError(this, re);
16975 			_errHandler.recover(this, re);
16976 		}
16977 		finally {
16978 			exitRule();
16979 		}
16980 		return _localctx;
16981 	}
16982 
16983 	public static class OnStringContext extends ParserRuleContext {
16984 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
16985 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
16986 		public OnStringContext(ParserRuleContext parent, int invokingState) {
16987 			super(parent, invokingState);
16988 		}
16989 		@Override public int getRuleIndex() { return RULE_onString; }
16990 		@Override
16991 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16992 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnString(this);
16993 			else return visitor.visitChildren(this);
16994 		}
16995 	}
16996 
16997 	public final OnStringContext onString() throws RecognitionException {
16998 		OnStringContext _localctx = new OnStringContext(_ctx, getState());
16999 		enterRule(_localctx, 352, RULE_onString);
17000 		try {
17001 			enterOuterAlt(_localctx, 1);
17002 			{
17003 			setState(2579);
17004 			match(ON);
17005 			setState(2580);
17006 			match(STRING_);
17007 			}
17008 		}
17009 		catch (RecognitionException re) {
17010 			_localctx.exception = re;
17011 			_errHandler.reportError(this, re);
17012 			_errHandler.recover(this, re);
17013 		}
17014 		finally {
17015 			exitRule();
17016 		}
17017 		return _localctx;
17018 	}
17019 
17020 	public static class MemoryTablePrimaryKeyConstraintOptionContext extends ParserRuleContext {
17021 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
17022 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
17023 		public WithBucketContext withBucket() {
17024 			return getRuleContext(WithBucketContext.class,0);
17025 		}
17026 		public MemoryTablePrimaryKeyConstraintOptionContext(ParserRuleContext parent, int invokingState) {
17027 			super(parent, invokingState);
17028 		}
17029 		@Override public int getRuleIndex() { return RULE_memoryTablePrimaryKeyConstraintOption; }
17030 		@Override
17031 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17032 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMemoryTablePrimaryKeyConstraintOption(this);
17033 			else return visitor.visitChildren(this);
17034 		}
17035 	}
17036 
17037 	public final MemoryTablePrimaryKeyConstraintOptionContext memoryTablePrimaryKeyConstraintOption() throws RecognitionException {
17038 		MemoryTablePrimaryKeyConstraintOptionContext _localctx = new MemoryTablePrimaryKeyConstraintOptionContext(_ctx, getState());
17039 		enterRule(_localctx, 354, RULE_memoryTablePrimaryKeyConstraintOption);
17040 		try {
17041 			setState(2588);
17042 			_errHandler.sync(this);
17043 			switch ( getInterpreter().adaptivePredict(_input,199,_ctx) ) {
17044 			case 1:
17045 				enterOuterAlt(_localctx, 1);
17046 				{
17047 				setState(2582);
17048 				match(NONCLUSTERED);
17049 				}
17050 				break;
17051 			case 2:
17052 				enterOuterAlt(_localctx, 2);
17053 				{
17054 				setState(2583);
17055 				match(NONCLUSTERED);
17056 				setState(2584);
17057 				match(HASH);
17058 				setState(2586);
17059 				_errHandler.sync(this);
17060 				switch ( getInterpreter().adaptivePredict(_input,198,_ctx) ) {
17061 				case 1:
17062 					{
17063 					setState(2585);
17064 					withBucket();
17065 					}
17066 					break;
17067 				}
17068 				}
17069 				break;
17070 			}
17071 		}
17072 		catch (RecognitionException re) {
17073 			_localctx.exception = re;
17074 			_errHandler.reportError(this, re);
17075 			_errHandler.recover(this, re);
17076 		}
17077 		finally {
17078 			exitRule();
17079 		}
17080 		return _localctx;
17081 	}
17082 
17083 	public static class WithBucketContext extends ParserRuleContext {
17084 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
17085 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17086 		public TerminalNode BUCKET_COUNT() { return getToken(SQLServerStatementParser.BUCKET_COUNT, 0); }
17087 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
17088 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
17089 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17090 		public WithBucketContext(ParserRuleContext parent, int invokingState) {
17091 			super(parent, invokingState);
17092 		}
17093 		@Override public int getRuleIndex() { return RULE_withBucket; }
17094 		@Override
17095 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17096 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithBucket(this);
17097 			else return visitor.visitChildren(this);
17098 		}
17099 	}
17100 
17101 	public final WithBucketContext withBucket() throws RecognitionException {
17102 		WithBucketContext _localctx = new WithBucketContext(_ctx, getState());
17103 		enterRule(_localctx, 356, RULE_withBucket);
17104 		try {
17105 			enterOuterAlt(_localctx, 1);
17106 			{
17107 			setState(2590);
17108 			match(WITH);
17109 			setState(2591);
17110 			match(LP_);
17111 			setState(2592);
17112 			match(BUCKET_COUNT);
17113 			setState(2593);
17114 			match(EQ_);
17115 			setState(2594);
17116 			match(NUMBER_);
17117 			setState(2595);
17118 			match(RP_);
17119 			}
17120 		}
17121 		catch (RecognitionException re) {
17122 			_localctx.exception = re;
17123 			_errHandler.reportError(this, re);
17124 			_errHandler.recover(this, re);
17125 		}
17126 		finally {
17127 			exitRule();
17128 		}
17129 		return _localctx;
17130 	}
17131 
17132 	public static class ColumnForeignKeyConstraintContext extends ParserRuleContext {
17133 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
17134 		public TableNameContext tableName() {
17135 			return getRuleContext(TableNameContext.class,0);
17136 		}
17137 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
17138 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
17139 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17140 		public ColumnNameContext columnName() {
17141 			return getRuleContext(ColumnNameContext.class,0);
17142 		}
17143 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17144 		public List<ForeignKeyOnActionContext> foreignKeyOnAction() {
17145 			return getRuleContexts(ForeignKeyOnActionContext.class);
17146 		}
17147 		public ForeignKeyOnActionContext foreignKeyOnAction(int i) {
17148 			return getRuleContext(ForeignKeyOnActionContext.class,i);
17149 		}
17150 		public ColumnForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
17151 			super(parent, invokingState);
17152 		}
17153 		@Override public int getRuleIndex() { return RULE_columnForeignKeyConstraint; }
17154 		@Override
17155 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17156 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnForeignKeyConstraint(this);
17157 			else return visitor.visitChildren(this);
17158 		}
17159 	}
17160 
17161 	public final ColumnForeignKeyConstraintContext columnForeignKeyConstraint() throws RecognitionException {
17162 		ColumnForeignKeyConstraintContext _localctx = new ColumnForeignKeyConstraintContext(_ctx, getState());
17163 		enterRule(_localctx, 358, RULE_columnForeignKeyConstraint);
17164 		int _la;
17165 		try {
17166 			int _alt;
17167 			enterOuterAlt(_localctx, 1);
17168 			{
17169 			setState(2599);
17170 			_errHandler.sync(this);
17171 			_la = _input.LA(1);
17172 			if (_la==FOREIGN) {
17173 				{
17174 				setState(2597);
17175 				match(FOREIGN);
17176 				setState(2598);
17177 				match(KEY);
17178 				}
17179 			}
17180 
17181 			setState(2601);
17182 			match(REFERENCES);
17183 			setState(2602);
17184 			tableName();
17185 			setState(2607);
17186 			_errHandler.sync(this);
17187 			switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) {
17188 			case 1:
17189 				{
17190 				setState(2603);
17191 				match(LP_);
17192 				setState(2604);
17193 				columnName();
17194 				setState(2605);
17195 				match(RP_);
17196 				}
17197 				break;
17198 			}
17199 			setState(2612);
17200 			_errHandler.sync(this);
17201 			_alt = getInterpreter().adaptivePredict(_input,202,_ctx);
17202 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
17203 				if ( _alt==1 ) {
17204 					{
17205 					{
17206 					setState(2609);
17207 					foreignKeyOnAction();
17208 					}
17209 					} 
17210 				}
17211 				setState(2614);
17212 				_errHandler.sync(this);
17213 				_alt = getInterpreter().adaptivePredict(_input,202,_ctx);
17214 			}
17215 			}
17216 		}
17217 		catch (RecognitionException re) {
17218 			_localctx.exception = re;
17219 			_errHandler.reportError(this, re);
17220 			_errHandler.recover(this, re);
17221 		}
17222 		finally {
17223 			exitRule();
17224 		}
17225 		return _localctx;
17226 	}
17227 
17228 	public static class ForeignKeyOnActionContext extends ParserRuleContext {
17229 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17230 		public ForeignKeyOnContext foreignKeyOn() {
17231 			return getRuleContext(ForeignKeyOnContext.class,0);
17232 		}
17233 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
17234 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
17235 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
17236 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
17237 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
17238 		public ForeignKeyOnActionContext(ParserRuleContext parent, int invokingState) {
17239 			super(parent, invokingState);
17240 		}
17241 		@Override public int getRuleIndex() { return RULE_foreignKeyOnAction; }
17242 		@Override
17243 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17244 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForeignKeyOnAction(this);
17245 			else return visitor.visitChildren(this);
17246 		}
17247 	}
17248 
17249 	public final ForeignKeyOnActionContext foreignKeyOnAction() throws RecognitionException {
17250 		ForeignKeyOnActionContext _localctx = new ForeignKeyOnActionContext(_ctx, getState());
17251 		enterRule(_localctx, 360, RULE_foreignKeyOnAction);
17252 		int _la;
17253 		try {
17254 			setState(2621);
17255 			_errHandler.sync(this);
17256 			switch (_input.LA(1)) {
17257 			case ON:
17258 				enterOuterAlt(_localctx, 1);
17259 				{
17260 				setState(2615);
17261 				match(ON);
17262 				setState(2616);
17263 				_la = _input.LA(1);
17264 				if ( !(_la==UPDATE || _la==DELETE) ) {
17265 				_errHandler.recoverInline(this);
17266 				}
17267 				else {
17268 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
17269 					_errHandler.reportMatch(this);
17270 					consume();
17271 				}
17272 				setState(2617);
17273 				foreignKeyOn();
17274 				}
17275 				break;
17276 			case NOT:
17277 				enterOuterAlt(_localctx, 2);
17278 				{
17279 				setState(2618);
17280 				match(NOT);
17281 				setState(2619);
17282 				match(FOR);
17283 				setState(2620);
17284 				match(REPLICATION);
17285 				}
17286 				break;
17287 			default:
17288 				throw new NoViableAltException(this);
17289 			}
17290 		}
17291 		catch (RecognitionException re) {
17292 			_localctx.exception = re;
17293 			_errHandler.reportError(this, re);
17294 			_errHandler.recover(this, re);
17295 		}
17296 		finally {
17297 			exitRule();
17298 		}
17299 		return _localctx;
17300 	}
17301 
17302 	public static class ForeignKeyOnContext extends ParserRuleContext {
17303 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
17304 		public TerminalNode ACTION() { return getToken(SQLServerStatementParser.ACTION, 0); }
17305 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
17306 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
17307 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
17308 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
17309 		public ForeignKeyOnContext(ParserRuleContext parent, int invokingState) {
17310 			super(parent, invokingState);
17311 		}
17312 		@Override public int getRuleIndex() { return RULE_foreignKeyOn; }
17313 		@Override
17314 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17315 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForeignKeyOn(this);
17316 			else return visitor.visitChildren(this);
17317 		}
17318 	}
17319 
17320 	public final ForeignKeyOnContext foreignKeyOn() throws RecognitionException {
17321 		ForeignKeyOnContext _localctx = new ForeignKeyOnContext(_ctx, getState());
17322 		enterRule(_localctx, 362, RULE_foreignKeyOn);
17323 		int _la;
17324 		try {
17325 			setState(2628);
17326 			_errHandler.sync(this);
17327 			switch (_input.LA(1)) {
17328 			case NO:
17329 				enterOuterAlt(_localctx, 1);
17330 				{
17331 				setState(2623);
17332 				match(NO);
17333 				setState(2624);
17334 				match(ACTION);
17335 				}
17336 				break;
17337 			case CASCADE:
17338 				enterOuterAlt(_localctx, 2);
17339 				{
17340 				setState(2625);
17341 				match(CASCADE);
17342 				}
17343 				break;
17344 			case SET:
17345 				enterOuterAlt(_localctx, 3);
17346 				{
17347 				setState(2626);
17348 				match(SET);
17349 				setState(2627);
17350 				_la = _input.LA(1);
17351 				if ( !(_la==NULL || _la==DEFAULT) ) {
17352 				_errHandler.recoverInline(this);
17353 				}
17354 				else {
17355 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
17356 					_errHandler.reportMatch(this);
17357 					consume();
17358 				}
17359 				}
17360 				break;
17361 			default:
17362 				throw new NoViableAltException(this);
17363 			}
17364 		}
17365 		catch (RecognitionException re) {
17366 			_localctx.exception = re;
17367 			_errHandler.reportError(this, re);
17368 			_errHandler.recover(this, re);
17369 		}
17370 		finally {
17371 			exitRule();
17372 		}
17373 		return _localctx;
17374 	}
17375 
17376 	public static class CheckConstraintContext extends ParserRuleContext {
17377 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
17378 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17379 		public ExprContext expr() {
17380 			return getRuleContext(ExprContext.class,0);
17381 		}
17382 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17383 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
17384 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
17385 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
17386 		public CheckConstraintContext(ParserRuleContext parent, int invokingState) {
17387 			super(parent, invokingState);
17388 		}
17389 		@Override public int getRuleIndex() { return RULE_checkConstraint; }
17390 		@Override
17391 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17392 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCheckConstraint(this);
17393 			else return visitor.visitChildren(this);
17394 		}
17395 	}
17396 
17397 	public final CheckConstraintContext checkConstraint() throws RecognitionException {
17398 		CheckConstraintContext _localctx = new CheckConstraintContext(_ctx, getState());
17399 		enterRule(_localctx, 364, RULE_checkConstraint);
17400 		int _la;
17401 		try {
17402 			enterOuterAlt(_localctx, 1);
17403 			{
17404 			setState(2630);
17405 			match(CHECK);
17406 			setState(2634);
17407 			_errHandler.sync(this);
17408 			_la = _input.LA(1);
17409 			if (_la==NOT) {
17410 				{
17411 				setState(2631);
17412 				match(NOT);
17413 				setState(2632);
17414 				match(FOR);
17415 				setState(2633);
17416 				match(REPLICATION);
17417 				}
17418 			}
17419 
17420 			setState(2636);
17421 			match(LP_);
17422 			setState(2637);
17423 			expr(0);
17424 			setState(2638);
17425 			match(RP_);
17426 			}
17427 		}
17428 		catch (RecognitionException re) {
17429 			_localctx.exception = re;
17430 			_errHandler.reportError(this, re);
17431 			_errHandler.recover(this, re);
17432 		}
17433 		finally {
17434 			exitRule();
17435 		}
17436 		return _localctx;
17437 	}
17438 
17439 	public static class ColumnIndexContext extends ParserRuleContext {
17440 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
17441 		public IndexNameContext indexName() {
17442 			return getRuleContext(IndexNameContext.class,0);
17443 		}
17444 		public ClusterOptionContext clusterOption() {
17445 			return getRuleContext(ClusterOptionContext.class,0);
17446 		}
17447 		public WithIndexOptionContext withIndexOption() {
17448 			return getRuleContext(WithIndexOptionContext.class,0);
17449 		}
17450 		public IndexOnClauseContext indexOnClause() {
17451 			return getRuleContext(IndexOnClauseContext.class,0);
17452 		}
17453 		public FileStreamOnContext fileStreamOn() {
17454 			return getRuleContext(FileStreamOnContext.class,0);
17455 		}
17456 		public ColumnIndexContext(ParserRuleContext parent, int invokingState) {
17457 			super(parent, invokingState);
17458 		}
17459 		@Override public int getRuleIndex() { return RULE_columnIndex; }
17460 		@Override
17461 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17462 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnIndex(this);
17463 			else return visitor.visitChildren(this);
17464 		}
17465 	}
17466 
17467 	public final ColumnIndexContext columnIndex() throws RecognitionException {
17468 		ColumnIndexContext _localctx = new ColumnIndexContext(_ctx, getState());
17469 		enterRule(_localctx, 366, RULE_columnIndex);
17470 		int _la;
17471 		try {
17472 			enterOuterAlt(_localctx, 1);
17473 			{
17474 			setState(2640);
17475 			match(INDEX);
17476 			setState(2641);
17477 			indexName();
17478 			setState(2643);
17479 			_errHandler.sync(this);
17480 			_la = _input.LA(1);
17481 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
17482 				{
17483 				setState(2642);
17484 				clusterOption();
17485 				}
17486 			}
17487 
17488 			setState(2646);
17489 			_errHandler.sync(this);
17490 			switch ( getInterpreter().adaptivePredict(_input,207,_ctx) ) {
17491 			case 1:
17492 				{
17493 				setState(2645);
17494 				withIndexOption();
17495 				}
17496 				break;
17497 			}
17498 			setState(2649);
17499 			_errHandler.sync(this);
17500 			_la = _input.LA(1);
17501 			if (_la==ON) {
17502 				{
17503 				setState(2648);
17504 				indexOnClause();
17505 				}
17506 			}
17507 
17508 			setState(2652);
17509 			_errHandler.sync(this);
17510 			_la = _input.LA(1);
17511 			if (_la==FILESTREAM_ON) {
17512 				{
17513 				setState(2651);
17514 				fileStreamOn();
17515 				}
17516 			}
17517 
17518 			}
17519 		}
17520 		catch (RecognitionException re) {
17521 			_localctx.exception = re;
17522 			_errHandler.reportError(this, re);
17523 			_errHandler.recover(this, re);
17524 		}
17525 		finally {
17526 			exitRule();
17527 		}
17528 		return _localctx;
17529 	}
17530 
17531 	public static class WithIndexOptionContext extends ParserRuleContext {
17532 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
17533 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17534 		public List<IndexOptionContext> indexOption() {
17535 			return getRuleContexts(IndexOptionContext.class);
17536 		}
17537 		public IndexOptionContext indexOption(int i) {
17538 			return getRuleContext(IndexOptionContext.class,i);
17539 		}
17540 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17541 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
17542 		public TerminalNode COMMA_(int i) {
17543 			return getToken(SQLServerStatementParser.COMMA_, i);
17544 		}
17545 		public WithIndexOptionContext(ParserRuleContext parent, int invokingState) {
17546 			super(parent, invokingState);
17547 		}
17548 		@Override public int getRuleIndex() { return RULE_withIndexOption; }
17549 		@Override
17550 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17551 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithIndexOption(this);
17552 			else return visitor.visitChildren(this);
17553 		}
17554 	}
17555 
17556 	public final WithIndexOptionContext withIndexOption() throws RecognitionException {
17557 		WithIndexOptionContext _localctx = new WithIndexOptionContext(_ctx, getState());
17558 		enterRule(_localctx, 368, RULE_withIndexOption);
17559 		int _la;
17560 		try {
17561 			enterOuterAlt(_localctx, 1);
17562 			{
17563 			setState(2654);
17564 			match(WITH);
17565 			setState(2655);
17566 			match(LP_);
17567 			setState(2656);
17568 			indexOption();
17569 			setState(2661);
17570 			_errHandler.sync(this);
17571 			_la = _input.LA(1);
17572 			while (_la==COMMA_) {
17573 				{
17574 				{
17575 				setState(2657);
17576 				match(COMMA_);
17577 				setState(2658);
17578 				indexOption();
17579 				}
17580 				}
17581 				setState(2663);
17582 				_errHandler.sync(this);
17583 				_la = _input.LA(1);
17584 			}
17585 			setState(2664);
17586 			match(RP_);
17587 			}
17588 		}
17589 		catch (RecognitionException re) {
17590 			_localctx.exception = re;
17591 			_errHandler.reportError(this, re);
17592 			_errHandler.recover(this, re);
17593 		}
17594 		finally {
17595 			exitRule();
17596 		}
17597 		return _localctx;
17598 	}
17599 
17600 	public static class IndexOnClauseContext extends ParserRuleContext {
17601 		public OnSchemaColumnContext onSchemaColumn() {
17602 			return getRuleContext(OnSchemaColumnContext.class,0);
17603 		}
17604 		public OnFileGroupContext onFileGroup() {
17605 			return getRuleContext(OnFileGroupContext.class,0);
17606 		}
17607 		public OnDefaultContext onDefault() {
17608 			return getRuleContext(OnDefaultContext.class,0);
17609 		}
17610 		public IndexOnClauseContext(ParserRuleContext parent, int invokingState) {
17611 			super(parent, invokingState);
17612 		}
17613 		@Override public int getRuleIndex() { return RULE_indexOnClause; }
17614 		@Override
17615 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17616 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOnClause(this);
17617 			else return visitor.visitChildren(this);
17618 		}
17619 	}
17620 
17621 	public final IndexOnClauseContext indexOnClause() throws RecognitionException {
17622 		IndexOnClauseContext _localctx = new IndexOnClauseContext(_ctx, getState());
17623 		enterRule(_localctx, 370, RULE_indexOnClause);
17624 		try {
17625 			setState(2669);
17626 			_errHandler.sync(this);
17627 			switch ( getInterpreter().adaptivePredict(_input,211,_ctx) ) {
17628 			case 1:
17629 				enterOuterAlt(_localctx, 1);
17630 				{
17631 				setState(2666);
17632 				onSchemaColumn();
17633 				}
17634 				break;
17635 			case 2:
17636 				enterOuterAlt(_localctx, 2);
17637 				{
17638 				setState(2667);
17639 				onFileGroup();
17640 				}
17641 				break;
17642 			case 3:
17643 				enterOuterAlt(_localctx, 3);
17644 				{
17645 				setState(2668);
17646 				onDefault();
17647 				}
17648 				break;
17649 			}
17650 		}
17651 		catch (RecognitionException re) {
17652 			_localctx.exception = re;
17653 			_errHandler.reportError(this, re);
17654 			_errHandler.recover(this, re);
17655 		}
17656 		finally {
17657 			exitRule();
17658 		}
17659 		return _localctx;
17660 	}
17661 
17662 	public static class OnDefaultContext extends ParserRuleContext {
17663 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17664 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
17665 		public OnDefaultContext(ParserRuleContext parent, int invokingState) {
17666 			super(parent, invokingState);
17667 		}
17668 		@Override public int getRuleIndex() { return RULE_onDefault; }
17669 		@Override
17670 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17671 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnDefault(this);
17672 			else return visitor.visitChildren(this);
17673 		}
17674 	}
17675 
17676 	public final OnDefaultContext onDefault() throws RecognitionException {
17677 		OnDefaultContext _localctx = new OnDefaultContext(_ctx, getState());
17678 		enterRule(_localctx, 372, RULE_onDefault);
17679 		try {
17680 			enterOuterAlt(_localctx, 1);
17681 			{
17682 			setState(2671);
17683 			match(ON);
17684 			setState(2672);
17685 			match(DEFAULT);
17686 			}
17687 		}
17688 		catch (RecognitionException re) {
17689 			_localctx.exception = re;
17690 			_errHandler.reportError(this, re);
17691 			_errHandler.recover(this, re);
17692 		}
17693 		finally {
17694 			exitRule();
17695 		}
17696 		return _localctx;
17697 	}
17698 
17699 	public static class FileStreamOnContext extends ParserRuleContext {
17700 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
17701 		public IgnoredIdentifierContext ignoredIdentifier() {
17702 			return getRuleContext(IgnoredIdentifierContext.class,0);
17703 		}
17704 		public SchemaNameContext schemaName() {
17705 			return getRuleContext(SchemaNameContext.class,0);
17706 		}
17707 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
17708 		public FileStreamOnContext(ParserRuleContext parent, int invokingState) {
17709 			super(parent, invokingState);
17710 		}
17711 		@Override public int getRuleIndex() { return RULE_fileStreamOn; }
17712 		@Override
17713 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17714 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileStreamOn(this);
17715 			else return visitor.visitChildren(this);
17716 		}
17717 	}
17718 
17719 	public final FileStreamOnContext fileStreamOn() throws RecognitionException {
17720 		FileStreamOnContext _localctx = new FileStreamOnContext(_ctx, getState());
17721 		enterRule(_localctx, 374, RULE_fileStreamOn);
17722 		try {
17723 			enterOuterAlt(_localctx, 1);
17724 			{
17725 			setState(2674);
17726 			match(FILESTREAM_ON);
17727 			setState(2678);
17728 			_errHandler.sync(this);
17729 			switch ( getInterpreter().adaptivePredict(_input,212,_ctx) ) {
17730 			case 1:
17731 				{
17732 				setState(2675);
17733 				ignoredIdentifier();
17734 				}
17735 				break;
17736 			case 2:
17737 				{
17738 				setState(2676);
17739 				schemaName();
17740 				}
17741 				break;
17742 			case 3:
17743 				{
17744 				setState(2677);
17745 				match(STRING_);
17746 				}
17747 				break;
17748 			}
17749 			}
17750 		}
17751 		catch (RecognitionException re) {
17752 			_localctx.exception = re;
17753 			_errHandler.reportError(this, re);
17754 			_errHandler.recover(this, re);
17755 		}
17756 		finally {
17757 			exitRule();
17758 		}
17759 		return _localctx;
17760 	}
17761 
17762 	public static class ColumnConstraintsContext extends ParserRuleContext {
17763 		public List<ColumnConstraintContext> columnConstraint() {
17764 			return getRuleContexts(ColumnConstraintContext.class);
17765 		}
17766 		public ColumnConstraintContext columnConstraint(int i) {
17767 			return getRuleContext(ColumnConstraintContext.class,i);
17768 		}
17769 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
17770 		public TerminalNode COMMA_(int i) {
17771 			return getToken(SQLServerStatementParser.COMMA_, i);
17772 		}
17773 		public ColumnConstraintsContext(ParserRuleContext parent, int invokingState) {
17774 			super(parent, invokingState);
17775 		}
17776 		@Override public int getRuleIndex() { return RULE_columnConstraints; }
17777 		@Override
17778 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17779 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnConstraints(this);
17780 			else return visitor.visitChildren(this);
17781 		}
17782 	}
17783 
17784 	public final ColumnConstraintsContext columnConstraints() throws RecognitionException {
17785 		ColumnConstraintsContext _localctx = new ColumnConstraintsContext(_ctx, getState());
17786 		enterRule(_localctx, 376, RULE_columnConstraints);
17787 		try {
17788 			int _alt;
17789 			enterOuterAlt(_localctx, 1);
17790 			{
17791 			setState(2688);
17792 			_errHandler.sync(this);
17793 			switch ( getInterpreter().adaptivePredict(_input,214,_ctx) ) {
17794 			case 1:
17795 				{
17796 				setState(2680);
17797 				columnConstraint();
17798 				setState(2685);
17799 				_errHandler.sync(this);
17800 				_alt = getInterpreter().adaptivePredict(_input,213,_ctx);
17801 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
17802 					if ( _alt==1 ) {
17803 						{
17804 						{
17805 						setState(2681);
17806 						match(COMMA_);
17807 						setState(2682);
17808 						columnConstraint();
17809 						}
17810 						} 
17811 					}
17812 					setState(2687);
17813 					_errHandler.sync(this);
17814 					_alt = getInterpreter().adaptivePredict(_input,213,_ctx);
17815 				}
17816 				}
17817 				break;
17818 			}
17819 			}
17820 		}
17821 		catch (RecognitionException re) {
17822 			_localctx.exception = re;
17823 			_errHandler.reportError(this, re);
17824 			_errHandler.recover(this, re);
17825 		}
17826 		finally {
17827 			exitRule();
17828 		}
17829 		return _localctx;
17830 	}
17831 
17832 	public static class ComputedColumnDefinitionContext extends ParserRuleContext {
17833 		public ColumnNameContext columnName() {
17834 			return getRuleContext(ColumnNameContext.class,0);
17835 		}
17836 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
17837 		public ExprContext expr() {
17838 			return getRuleContext(ExprContext.class,0);
17839 		}
17840 		public TerminalNode PERSISTED() { return getToken(SQLServerStatementParser.PERSISTED, 0); }
17841 		public ComputedColumnConstraintContext computedColumnConstraint() {
17842 			return getRuleContext(ComputedColumnConstraintContext.class,0);
17843 		}
17844 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
17845 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
17846 		public ComputedColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
17847 			super(parent, invokingState);
17848 		}
17849 		@Override public int getRuleIndex() { return RULE_computedColumnDefinition; }
17850 		@Override
17851 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17852 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnDefinition(this);
17853 			else return visitor.visitChildren(this);
17854 		}
17855 	}
17856 
17857 	public final ComputedColumnDefinitionContext computedColumnDefinition() throws RecognitionException {
17858 		ComputedColumnDefinitionContext _localctx = new ComputedColumnDefinitionContext(_ctx, getState());
17859 		enterRule(_localctx, 378, RULE_computedColumnDefinition);
17860 		int _la;
17861 		try {
17862 			enterOuterAlt(_localctx, 1);
17863 			{
17864 			setState(2690);
17865 			columnName();
17866 			setState(2691);
17867 			match(AS);
17868 			setState(2692);
17869 			expr(0);
17870 			setState(2698);
17871 			_errHandler.sync(this);
17872 			switch ( getInterpreter().adaptivePredict(_input,216,_ctx) ) {
17873 			case 1:
17874 				{
17875 				setState(2693);
17876 				match(PERSISTED);
17877 				setState(2696);
17878 				_errHandler.sync(this);
17879 				_la = _input.LA(1);
17880 				if (_la==NOT) {
17881 					{
17882 					setState(2694);
17883 					match(NOT);
17884 					setState(2695);
17885 					match(NULL);
17886 					}
17887 				}
17888 
17889 				}
17890 				break;
17891 			}
17892 			setState(2701);
17893 			_errHandler.sync(this);
17894 			switch ( getInterpreter().adaptivePredict(_input,217,_ctx) ) {
17895 			case 1:
17896 				{
17897 				setState(2700);
17898 				computedColumnConstraint();
17899 				}
17900 				break;
17901 			}
17902 			}
17903 		}
17904 		catch (RecognitionException re) {
17905 			_localctx.exception = re;
17906 			_errHandler.reportError(this, re);
17907 			_errHandler.recover(this, re);
17908 		}
17909 		finally {
17910 			exitRule();
17911 		}
17912 		return _localctx;
17913 	}
17914 
17915 	public static class ColumnSetDefinitionContext extends ParserRuleContext {
17916 		public IgnoredIdentifierContext ignoredIdentifier() {
17917 			return getRuleContext(IgnoredIdentifierContext.class,0);
17918 		}
17919 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
17920 		public TerminalNode COLUMN_SET() { return getToken(SQLServerStatementParser.COLUMN_SET, 0); }
17921 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
17922 		public TerminalNode ALL_SPARSE_COLUMNS() { return getToken(SQLServerStatementParser.ALL_SPARSE_COLUMNS, 0); }
17923 		public ColumnSetDefinitionContext(ParserRuleContext parent, int invokingState) {
17924 			super(parent, invokingState);
17925 		}
17926 		@Override public int getRuleIndex() { return RULE_columnSetDefinition; }
17927 		@Override
17928 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17929 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnSetDefinition(this);
17930 			else return visitor.visitChildren(this);
17931 		}
17932 	}
17933 
17934 	public final ColumnSetDefinitionContext columnSetDefinition() throws RecognitionException {
17935 		ColumnSetDefinitionContext _localctx = new ColumnSetDefinitionContext(_ctx, getState());
17936 		enterRule(_localctx, 380, RULE_columnSetDefinition);
17937 		try {
17938 			enterOuterAlt(_localctx, 1);
17939 			{
17940 			setState(2703);
17941 			ignoredIdentifier();
17942 			setState(2704);
17943 			match(IDENTIFIER_);
17944 			setState(2705);
17945 			match(COLUMN_SET);
17946 			setState(2706);
17947 			match(FOR);
17948 			setState(2707);
17949 			match(ALL_SPARSE_COLUMNS);
17950 			}
17951 		}
17952 		catch (RecognitionException re) {
17953 			_localctx.exception = re;
17954 			_errHandler.reportError(this, re);
17955 			_errHandler.recover(this, re);
17956 		}
17957 		finally {
17958 			exitRule();
17959 		}
17960 		return _localctx;
17961 	}
17962 
17963 	public static class TableConstraintContext extends ParserRuleContext {
17964 		public TablePrimaryConstraintContext tablePrimaryConstraint() {
17965 			return getRuleContext(TablePrimaryConstraintContext.class,0);
17966 		}
17967 		public TableForeignKeyConstraintContext tableForeignKeyConstraint() {
17968 			return getRuleContext(TableForeignKeyConstraintContext.class,0);
17969 		}
17970 		public CheckConstraintContext checkConstraint() {
17971 			return getRuleContext(CheckConstraintContext.class,0);
17972 		}
17973 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
17974 		public ConstraintNameContext constraintName() {
17975 			return getRuleContext(ConstraintNameContext.class,0);
17976 		}
17977 		public TableConstraintContext(ParserRuleContext parent, int invokingState) {
17978 			super(parent, invokingState);
17979 		}
17980 		@Override public int getRuleIndex() { return RULE_tableConstraint; }
17981 		@Override
17982 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17983 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableConstraint(this);
17984 			else return visitor.visitChildren(this);
17985 		}
17986 	}
17987 
17988 	public final TableConstraintContext tableConstraint() throws RecognitionException {
17989 		TableConstraintContext _localctx = new TableConstraintContext(_ctx, getState());
17990 		enterRule(_localctx, 382, RULE_tableConstraint);
17991 		int _la;
17992 		try {
17993 			enterOuterAlt(_localctx, 1);
17994 			{
17995 			setState(2711);
17996 			_errHandler.sync(this);
17997 			_la = _input.LA(1);
17998 			if (_la==CONSTRAINT) {
17999 				{
18000 				setState(2709);
18001 				match(CONSTRAINT);
18002 				setState(2710);
18003 				constraintName();
18004 				}
18005 			}
18006 
18007 			setState(2716);
18008 			_errHandler.sync(this);
18009 			switch (_input.LA(1)) {
18010 			case PRIMARY:
18011 			case UNIQUE:
18012 			case KEY:
18013 				{
18014 				setState(2713);
18015 				tablePrimaryConstraint();
18016 				}
18017 				break;
18018 			case LP_:
18019 			case FOREIGN:
18020 				{
18021 				setState(2714);
18022 				tableForeignKeyConstraint();
18023 				}
18024 				break;
18025 			case CHECK:
18026 				{
18027 				setState(2715);
18028 				checkConstraint();
18029 				}
18030 				break;
18031 			default:
18032 				throw new NoViableAltException(this);
18033 			}
18034 			}
18035 		}
18036 		catch (RecognitionException re) {
18037 			_localctx.exception = re;
18038 			_errHandler.reportError(this, re);
18039 			_errHandler.recover(this, re);
18040 		}
18041 		finally {
18042 			exitRule();
18043 		}
18044 		return _localctx;
18045 	}
18046 
18047 	public static class TablePrimaryConstraintContext extends ParserRuleContext {
18048 		public PrimaryKeyUniqueContext primaryKeyUnique() {
18049 			return getRuleContext(PrimaryKeyUniqueContext.class,0);
18050 		}
18051 		public DiskTablePrimaryConstraintOptionContext diskTablePrimaryConstraintOption() {
18052 			return getRuleContext(DiskTablePrimaryConstraintOptionContext.class,0);
18053 		}
18054 		public MemoryTablePrimaryConstraintOptionContext memoryTablePrimaryConstraintOption() {
18055 			return getRuleContext(MemoryTablePrimaryConstraintOptionContext.class,0);
18056 		}
18057 		public TablePrimaryConstraintContext(ParserRuleContext parent, int invokingState) {
18058 			super(parent, invokingState);
18059 		}
18060 		@Override public int getRuleIndex() { return RULE_tablePrimaryConstraint; }
18061 		@Override
18062 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18063 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTablePrimaryConstraint(this);
18064 			else return visitor.visitChildren(this);
18065 		}
18066 	}
18067 
18068 	public final TablePrimaryConstraintContext tablePrimaryConstraint() throws RecognitionException {
18069 		TablePrimaryConstraintContext _localctx = new TablePrimaryConstraintContext(_ctx, getState());
18070 		enterRule(_localctx, 384, RULE_tablePrimaryConstraint);
18071 		try {
18072 			enterOuterAlt(_localctx, 1);
18073 			{
18074 			setState(2718);
18075 			primaryKeyUnique();
18076 			setState(2721);
18077 			_errHandler.sync(this);
18078 			switch ( getInterpreter().adaptivePredict(_input,220,_ctx) ) {
18079 			case 1:
18080 				{
18081 				setState(2719);
18082 				diskTablePrimaryConstraintOption();
18083 				}
18084 				break;
18085 			case 2:
18086 				{
18087 				setState(2720);
18088 				memoryTablePrimaryConstraintOption();
18089 				}
18090 				break;
18091 			}
18092 			}
18093 		}
18094 		catch (RecognitionException re) {
18095 			_localctx.exception = re;
18096 			_errHandler.reportError(this, re);
18097 			_errHandler.recover(this, re);
18098 		}
18099 		finally {
18100 			exitRule();
18101 		}
18102 		return _localctx;
18103 	}
18104 
18105 	public static class PrimaryKeyUniqueContext extends ParserRuleContext {
18106 		public PrimaryKeyContext primaryKey() {
18107 			return getRuleContext(PrimaryKeyContext.class,0);
18108 		}
18109 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
18110 		public PrimaryKeyUniqueContext(ParserRuleContext parent, int invokingState) {
18111 			super(parent, invokingState);
18112 		}
18113 		@Override public int getRuleIndex() { return RULE_primaryKeyUnique; }
18114 		@Override
18115 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18116 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyUnique(this);
18117 			else return visitor.visitChildren(this);
18118 		}
18119 	}
18120 
18121 	public final PrimaryKeyUniqueContext primaryKeyUnique() throws RecognitionException {
18122 		PrimaryKeyUniqueContext _localctx = new PrimaryKeyUniqueContext(_ctx, getState());
18123 		enterRule(_localctx, 386, RULE_primaryKeyUnique);
18124 		try {
18125 			setState(2725);
18126 			_errHandler.sync(this);
18127 			switch (_input.LA(1)) {
18128 			case PRIMARY:
18129 			case KEY:
18130 				enterOuterAlt(_localctx, 1);
18131 				{
18132 				setState(2723);
18133 				primaryKey();
18134 				}
18135 				break;
18136 			case UNIQUE:
18137 				enterOuterAlt(_localctx, 2);
18138 				{
18139 				setState(2724);
18140 				match(UNIQUE);
18141 				}
18142 				break;
18143 			default:
18144 				throw new NoViableAltException(this);
18145 			}
18146 		}
18147 		catch (RecognitionException re) {
18148 			_localctx.exception = re;
18149 			_errHandler.reportError(this, re);
18150 			_errHandler.recover(this, re);
18151 		}
18152 		finally {
18153 			exitRule();
18154 		}
18155 		return _localctx;
18156 	}
18157 
18158 	public static class DiskTablePrimaryConstraintOptionContext extends ParserRuleContext {
18159 		public ColumnNamesContext columnNames() {
18160 			return getRuleContext(ColumnNamesContext.class,0);
18161 		}
18162 		public ClusterOptionContext clusterOption() {
18163 			return getRuleContext(ClusterOptionContext.class,0);
18164 		}
18165 		public PrimaryKeyWithClauseContext primaryKeyWithClause() {
18166 			return getRuleContext(PrimaryKeyWithClauseContext.class,0);
18167 		}
18168 		public PrimaryKeyOnClauseContext primaryKeyOnClause() {
18169 			return getRuleContext(PrimaryKeyOnClauseContext.class,0);
18170 		}
18171 		public DiskTablePrimaryConstraintOptionContext(ParserRuleContext parent, int invokingState) {
18172 			super(parent, invokingState);
18173 		}
18174 		@Override public int getRuleIndex() { return RULE_diskTablePrimaryConstraintOption; }
18175 		@Override
18176 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18177 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDiskTablePrimaryConstraintOption(this);
18178 			else return visitor.visitChildren(this);
18179 		}
18180 	}
18181 
18182 	public final DiskTablePrimaryConstraintOptionContext diskTablePrimaryConstraintOption() throws RecognitionException {
18183 		DiskTablePrimaryConstraintOptionContext _localctx = new DiskTablePrimaryConstraintOptionContext(_ctx, getState());
18184 		enterRule(_localctx, 388, RULE_diskTablePrimaryConstraintOption);
18185 		int _la;
18186 		try {
18187 			enterOuterAlt(_localctx, 1);
18188 			{
18189 			setState(2728);
18190 			_errHandler.sync(this);
18191 			_la = _input.LA(1);
18192 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
18193 				{
18194 				setState(2727);
18195 				clusterOption();
18196 				}
18197 			}
18198 
18199 			setState(2730);
18200 			columnNames();
18201 			setState(2732);
18202 			_errHandler.sync(this);
18203 			switch ( getInterpreter().adaptivePredict(_input,223,_ctx) ) {
18204 			case 1:
18205 				{
18206 				setState(2731);
18207 				primaryKeyWithClause();
18208 				}
18209 				break;
18210 			}
18211 			setState(2735);
18212 			_errHandler.sync(this);
18213 			_la = _input.LA(1);
18214 			if (_la==ON) {
18215 				{
18216 				setState(2734);
18217 				primaryKeyOnClause();
18218 				}
18219 			}
18220 
18221 			}
18222 		}
18223 		catch (RecognitionException re) {
18224 			_localctx.exception = re;
18225 			_errHandler.reportError(this, re);
18226 			_errHandler.recover(this, re);
18227 		}
18228 		finally {
18229 			exitRule();
18230 		}
18231 		return _localctx;
18232 	}
18233 
18234 	public static class MemoryTablePrimaryConstraintOptionContext extends ParserRuleContext {
18235 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
18236 		public ColumnNamesContext columnNames() {
18237 			return getRuleContext(ColumnNamesContext.class,0);
18238 		}
18239 		public HashWithBucketContext hashWithBucket() {
18240 			return getRuleContext(HashWithBucketContext.class,0);
18241 		}
18242 		public MemoryTablePrimaryConstraintOptionContext(ParserRuleContext parent, int invokingState) {
18243 			super(parent, invokingState);
18244 		}
18245 		@Override public int getRuleIndex() { return RULE_memoryTablePrimaryConstraintOption; }
18246 		@Override
18247 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18248 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMemoryTablePrimaryConstraintOption(this);
18249 			else return visitor.visitChildren(this);
18250 		}
18251 	}
18252 
18253 	public final MemoryTablePrimaryConstraintOptionContext memoryTablePrimaryConstraintOption() throws RecognitionException {
18254 		MemoryTablePrimaryConstraintOptionContext _localctx = new MemoryTablePrimaryConstraintOptionContext(_ctx, getState());
18255 		enterRule(_localctx, 390, RULE_memoryTablePrimaryConstraintOption);
18256 		try {
18257 			enterOuterAlt(_localctx, 1);
18258 			{
18259 			setState(2737);
18260 			match(NONCLUSTERED);
18261 			setState(2740);
18262 			_errHandler.sync(this);
18263 			switch (_input.LA(1)) {
18264 			case LP_:
18265 				{
18266 				setState(2738);
18267 				columnNames();
18268 				}
18269 				break;
18270 			case HASH:
18271 				{
18272 				setState(2739);
18273 				hashWithBucket();
18274 				}
18275 				break;
18276 			default:
18277 				throw new NoViableAltException(this);
18278 			}
18279 			}
18280 		}
18281 		catch (RecognitionException re) {
18282 			_localctx.exception = re;
18283 			_errHandler.reportError(this, re);
18284 			_errHandler.recover(this, re);
18285 		}
18286 		finally {
18287 			exitRule();
18288 		}
18289 		return _localctx;
18290 	}
18291 
18292 	public static class HashWithBucketContext extends ParserRuleContext {
18293 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
18294 		public ColumnNamesContext columnNames() {
18295 			return getRuleContext(ColumnNamesContext.class,0);
18296 		}
18297 		public WithBucketContext withBucket() {
18298 			return getRuleContext(WithBucketContext.class,0);
18299 		}
18300 		public HashWithBucketContext(ParserRuleContext parent, int invokingState) {
18301 			super(parent, invokingState);
18302 		}
18303 		@Override public int getRuleIndex() { return RULE_hashWithBucket; }
18304 		@Override
18305 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18306 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHashWithBucket(this);
18307 			else return visitor.visitChildren(this);
18308 		}
18309 	}
18310 
18311 	public final HashWithBucketContext hashWithBucket() throws RecognitionException {
18312 		HashWithBucketContext _localctx = new HashWithBucketContext(_ctx, getState());
18313 		enterRule(_localctx, 392, RULE_hashWithBucket);
18314 		try {
18315 			enterOuterAlt(_localctx, 1);
18316 			{
18317 			setState(2742);
18318 			match(HASH);
18319 			setState(2743);
18320 			columnNames();
18321 			setState(2744);
18322 			withBucket();
18323 			}
18324 		}
18325 		catch (RecognitionException re) {
18326 			_localctx.exception = re;
18327 			_errHandler.reportError(this, re);
18328 			_errHandler.recover(this, re);
18329 		}
18330 		finally {
18331 			exitRule();
18332 		}
18333 		return _localctx;
18334 	}
18335 
18336 	public static class TableForeignKeyConstraintContext extends ParserRuleContext {
18337 		public List<ColumnNamesContext> columnNames() {
18338 			return getRuleContexts(ColumnNamesContext.class);
18339 		}
18340 		public ColumnNamesContext columnNames(int i) {
18341 			return getRuleContext(ColumnNamesContext.class,i);
18342 		}
18343 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
18344 		public TableNameContext tableName() {
18345 			return getRuleContext(TableNameContext.class,0);
18346 		}
18347 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
18348 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
18349 		public List<ForeignKeyOnActionContext> foreignKeyOnAction() {
18350 			return getRuleContexts(ForeignKeyOnActionContext.class);
18351 		}
18352 		public ForeignKeyOnActionContext foreignKeyOnAction(int i) {
18353 			return getRuleContext(ForeignKeyOnActionContext.class,i);
18354 		}
18355 		public TableForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
18356 			super(parent, invokingState);
18357 		}
18358 		@Override public int getRuleIndex() { return RULE_tableForeignKeyConstraint; }
18359 		@Override
18360 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18361 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableForeignKeyConstraint(this);
18362 			else return visitor.visitChildren(this);
18363 		}
18364 	}
18365 
18366 	public final TableForeignKeyConstraintContext tableForeignKeyConstraint() throws RecognitionException {
18367 		TableForeignKeyConstraintContext _localctx = new TableForeignKeyConstraintContext(_ctx, getState());
18368 		enterRule(_localctx, 394, RULE_tableForeignKeyConstraint);
18369 		int _la;
18370 		try {
18371 			enterOuterAlt(_localctx, 1);
18372 			{
18373 			setState(2748);
18374 			_errHandler.sync(this);
18375 			_la = _input.LA(1);
18376 			if (_la==FOREIGN) {
18377 				{
18378 				setState(2746);
18379 				match(FOREIGN);
18380 				setState(2747);
18381 				match(KEY);
18382 				}
18383 			}
18384 
18385 			setState(2750);
18386 			columnNames();
18387 			setState(2751);
18388 			match(REFERENCES);
18389 			setState(2752);
18390 			tableName();
18391 			setState(2753);
18392 			columnNames();
18393 			setState(2757);
18394 			_errHandler.sync(this);
18395 			_la = _input.LA(1);
18396 			while (_la==ON || _la==NOT) {
18397 				{
18398 				{
18399 				setState(2754);
18400 				foreignKeyOnAction();
18401 				}
18402 				}
18403 				setState(2759);
18404 				_errHandler.sync(this);
18405 				_la = _input.LA(1);
18406 			}
18407 			}
18408 		}
18409 		catch (RecognitionException re) {
18410 			_localctx.exception = re;
18411 			_errHandler.reportError(this, re);
18412 			_errHandler.recover(this, re);
18413 		}
18414 		finally {
18415 			exitRule();
18416 		}
18417 		return _localctx;
18418 	}
18419 
18420 	public static class TableIndexContext extends ParserRuleContext {
18421 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
18422 		public IndexNameContext indexName() {
18423 			return getRuleContext(IndexNameContext.class,0);
18424 		}
18425 		public IndexNameOptionContext indexNameOption() {
18426 			return getRuleContext(IndexNameOptionContext.class,0);
18427 		}
18428 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
18429 		public IndexOptionsContext indexOptions() {
18430 			return getRuleContext(IndexOptionsContext.class,0);
18431 		}
18432 		public IndexOnClauseContext indexOnClause() {
18433 			return getRuleContext(IndexOnClauseContext.class,0);
18434 		}
18435 		public FileStreamOnContext fileStreamOn() {
18436 			return getRuleContext(FileStreamOnContext.class,0);
18437 		}
18438 		public TableIndexContext(ParserRuleContext parent, int invokingState) {
18439 			super(parent, invokingState);
18440 		}
18441 		@Override public int getRuleIndex() { return RULE_tableIndex; }
18442 		@Override
18443 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18444 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableIndex(this);
18445 			else return visitor.visitChildren(this);
18446 		}
18447 	}
18448 
18449 	public final TableIndexContext tableIndex() throws RecognitionException {
18450 		TableIndexContext _localctx = new TableIndexContext(_ctx, getState());
18451 		enterRule(_localctx, 396, RULE_tableIndex);
18452 		int _la;
18453 		try {
18454 			enterOuterAlt(_localctx, 1);
18455 			{
18456 			setState(2760);
18457 			match(INDEX);
18458 			setState(2761);
18459 			indexName();
18460 			setState(2762);
18461 			indexNameOption();
18462 			setState(2765);
18463 			_errHandler.sync(this);
18464 			_la = _input.LA(1);
18465 			if (_la==WITH) {
18466 				{
18467 				setState(2763);
18468 				match(WITH);
18469 				setState(2764);
18470 				indexOptions();
18471 				}
18472 			}
18473 
18474 			setState(2768);
18475 			_errHandler.sync(this);
18476 			_la = _input.LA(1);
18477 			if (_la==ON) {
18478 				{
18479 				setState(2767);
18480 				indexOnClause();
18481 				}
18482 			}
18483 
18484 			setState(2771);
18485 			_errHandler.sync(this);
18486 			_la = _input.LA(1);
18487 			if (_la==FILESTREAM_ON) {
18488 				{
18489 				setState(2770);
18490 				fileStreamOn();
18491 				}
18492 			}
18493 
18494 			}
18495 		}
18496 		catch (RecognitionException re) {
18497 			_localctx.exception = re;
18498 			_errHandler.reportError(this, re);
18499 			_errHandler.recover(this, re);
18500 		}
18501 		finally {
18502 			exitRule();
18503 		}
18504 		return _localctx;
18505 	}
18506 
18507 	public static class IndexNameOptionContext extends ParserRuleContext {
18508 		public ColumnNamesContext columnNames() {
18509 			return getRuleContext(ColumnNamesContext.class,0);
18510 		}
18511 		public ClusterOptionContext clusterOption() {
18512 			return getRuleContext(ClusterOptionContext.class,0);
18513 		}
18514 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
18515 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
18516 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
18517 		public IndexNameOptionContext(ParserRuleContext parent, int invokingState) {
18518 			super(parent, invokingState);
18519 		}
18520 		@Override public int getRuleIndex() { return RULE_indexNameOption; }
18521 		@Override
18522 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18523 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexNameOption(this);
18524 			else return visitor.visitChildren(this);
18525 		}
18526 	}
18527 
18528 	public final IndexNameOptionContext indexNameOption() throws RecognitionException {
18529 		IndexNameOptionContext _localctx = new IndexNameOptionContext(_ctx, getState());
18530 		enterRule(_localctx, 398, RULE_indexNameOption);
18531 		int _la;
18532 		try {
18533 			setState(2784);
18534 			_errHandler.sync(this);
18535 			switch ( getInterpreter().adaptivePredict(_input,233,_ctx) ) {
18536 			case 1:
18537 				enterOuterAlt(_localctx, 1);
18538 				{
18539 				setState(2774);
18540 				_errHandler.sync(this);
18541 				_la = _input.LA(1);
18542 				if (_la==CLUSTERED || _la==NONCLUSTERED) {
18543 					{
18544 					setState(2773);
18545 					clusterOption();
18546 					}
18547 				}
18548 
18549 				setState(2776);
18550 				columnNames();
18551 				}
18552 				break;
18553 			case 2:
18554 				enterOuterAlt(_localctx, 2);
18555 				{
18556 				setState(2777);
18557 				match(CLUSTERED);
18558 				setState(2778);
18559 				match(COLUMNSTORE);
18560 				}
18561 				break;
18562 			case 3:
18563 				enterOuterAlt(_localctx, 3);
18564 				{
18565 				setState(2780);
18566 				_errHandler.sync(this);
18567 				_la = _input.LA(1);
18568 				if (_la==NONCLUSTERED) {
18569 					{
18570 					setState(2779);
18571 					match(NONCLUSTERED);
18572 					}
18573 				}
18574 
18575 				setState(2782);
18576 				match(COLUMNSTORE);
18577 				setState(2783);
18578 				columnNames();
18579 				}
18580 				break;
18581 			}
18582 		}
18583 		catch (RecognitionException re) {
18584 			_localctx.exception = re;
18585 			_errHandler.reportError(this, re);
18586 			_errHandler.recover(this, re);
18587 		}
18588 		finally {
18589 			exitRule();
18590 		}
18591 		return _localctx;
18592 	}
18593 
18594 	public static class IndexOptionsContext extends ParserRuleContext {
18595 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18596 		public List<IndexOptionContext> indexOption() {
18597 			return getRuleContexts(IndexOptionContext.class);
18598 		}
18599 		public IndexOptionContext indexOption(int i) {
18600 			return getRuleContext(IndexOptionContext.class,i);
18601 		}
18602 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18603 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18604 		public TerminalNode COMMA_(int i) {
18605 			return getToken(SQLServerStatementParser.COMMA_, i);
18606 		}
18607 		public IndexOptionsContext(ParserRuleContext parent, int invokingState) {
18608 			super(parent, invokingState);
18609 		}
18610 		@Override public int getRuleIndex() { return RULE_indexOptions; }
18611 		@Override
18612 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18613 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOptions(this);
18614 			else return visitor.visitChildren(this);
18615 		}
18616 	}
18617 
18618 	public final IndexOptionsContext indexOptions() throws RecognitionException {
18619 		IndexOptionsContext _localctx = new IndexOptionsContext(_ctx, getState());
18620 		enterRule(_localctx, 400, RULE_indexOptions);
18621 		int _la;
18622 		try {
18623 			enterOuterAlt(_localctx, 1);
18624 			{
18625 			setState(2786);
18626 			match(LP_);
18627 			setState(2787);
18628 			indexOption();
18629 			setState(2792);
18630 			_errHandler.sync(this);
18631 			_la = _input.LA(1);
18632 			while (_la==COMMA_) {
18633 				{
18634 				{
18635 				setState(2788);
18636 				match(COMMA_);
18637 				setState(2789);
18638 				indexOption();
18639 				}
18640 				}
18641 				setState(2794);
18642 				_errHandler.sync(this);
18643 				_la = _input.LA(1);
18644 			}
18645 			setState(2795);
18646 			match(RP_);
18647 			}
18648 		}
18649 		catch (RecognitionException re) {
18650 			_localctx.exception = re;
18651 			_errHandler.reportError(this, re);
18652 			_errHandler.recover(this, re);
18653 		}
18654 		finally {
18655 			exitRule();
18656 		}
18657 		return _localctx;
18658 	}
18659 
18660 	public static class PeriodClauseContext extends ParserRuleContext {
18661 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
18662 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
18663 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
18664 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18665 		public List<ColumnNameContext> columnName() {
18666 			return getRuleContexts(ColumnNameContext.class);
18667 		}
18668 		public ColumnNameContext columnName(int i) {
18669 			return getRuleContext(ColumnNameContext.class,i);
18670 		}
18671 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
18672 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18673 		public PeriodClauseContext(ParserRuleContext parent, int invokingState) {
18674 			super(parent, invokingState);
18675 		}
18676 		@Override public int getRuleIndex() { return RULE_periodClause; }
18677 		@Override
18678 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18679 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPeriodClause(this);
18680 			else return visitor.visitChildren(this);
18681 		}
18682 	}
18683 
18684 	public final PeriodClauseContext periodClause() throws RecognitionException {
18685 		PeriodClauseContext _localctx = new PeriodClauseContext(_ctx, getState());
18686 		enterRule(_localctx, 402, RULE_periodClause);
18687 		try {
18688 			enterOuterAlt(_localctx, 1);
18689 			{
18690 			setState(2797);
18691 			match(PERIOD);
18692 			setState(2798);
18693 			match(FOR);
18694 			setState(2799);
18695 			match(SYSTEM_TIME);
18696 			setState(2800);
18697 			match(LP_);
18698 			setState(2801);
18699 			columnName();
18700 			setState(2802);
18701 			match(COMMA_);
18702 			setState(2803);
18703 			columnName();
18704 			setState(2804);
18705 			match(RP_);
18706 			}
18707 		}
18708 		catch (RecognitionException re) {
18709 			_localctx.exception = re;
18710 			_errHandler.reportError(this, re);
18711 			_errHandler.recover(this, re);
18712 		}
18713 		finally {
18714 			exitRule();
18715 		}
18716 		return _localctx;
18717 	}
18718 
18719 	public static class PartitionSchemeContext extends ParserRuleContext {
18720 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
18721 		public SchemaNameContext schemaName() {
18722 			return getRuleContext(SchemaNameContext.class,0);
18723 		}
18724 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18725 		public ColumnNameContext columnName() {
18726 			return getRuleContext(ColumnNameContext.class,0);
18727 		}
18728 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18729 		public IgnoredIdentifierContext ignoredIdentifier() {
18730 			return getRuleContext(IgnoredIdentifierContext.class,0);
18731 		}
18732 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
18733 		public PartitionSchemeContext(ParserRuleContext parent, int invokingState) {
18734 			super(parent, invokingState);
18735 		}
18736 		@Override public int getRuleIndex() { return RULE_partitionScheme; }
18737 		@Override
18738 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18739 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionScheme(this);
18740 			else return visitor.visitChildren(this);
18741 		}
18742 	}
18743 
18744 	public final PartitionSchemeContext partitionScheme() throws RecognitionException {
18745 		PartitionSchemeContext _localctx = new PartitionSchemeContext(_ctx, getState());
18746 		enterRule(_localctx, 404, RULE_partitionScheme);
18747 		int _la;
18748 		try {
18749 			enterOuterAlt(_localctx, 1);
18750 			{
18751 			setState(2816);
18752 			_errHandler.sync(this);
18753 			_la = _input.LA(1);
18754 			if (_la==ON) {
18755 				{
18756 				setState(2806);
18757 				match(ON);
18758 				setState(2814);
18759 				_errHandler.sync(this);
18760 				switch ( getInterpreter().adaptivePredict(_input,235,_ctx) ) {
18761 				case 1:
18762 					{
18763 					setState(2807);
18764 					schemaName();
18765 					setState(2808);
18766 					match(LP_);
18767 					setState(2809);
18768 					columnName();
18769 					setState(2810);
18770 					match(RP_);
18771 					}
18772 					break;
18773 				case 2:
18774 					{
18775 					setState(2812);
18776 					ignoredIdentifier();
18777 					}
18778 					break;
18779 				case 3:
18780 					{
18781 					setState(2813);
18782 					match(STRING_);
18783 					}
18784 					break;
18785 				}
18786 				}
18787 			}
18788 
18789 			}
18790 		}
18791 		catch (RecognitionException re) {
18792 			_localctx.exception = re;
18793 			_errHandler.reportError(this, re);
18794 			_errHandler.recover(this, re);
18795 		}
18796 		finally {
18797 			exitRule();
18798 		}
18799 		return _localctx;
18800 	}
18801 
18802 	public static class FileGroupContext extends ParserRuleContext {
18803 		public TerminalNode TEXTIMAGE_ON() { return getToken(SQLServerStatementParser.TEXTIMAGE_ON, 0); }
18804 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
18805 		public TableOptionsContext tableOptions() {
18806 			return getRuleContext(TableOptionsContext.class,0);
18807 		}
18808 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
18809 			return getRuleContexts(IgnoredIdentifierContext.class);
18810 		}
18811 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
18812 			return getRuleContext(IgnoredIdentifierContext.class,i);
18813 		}
18814 		public List<TerminalNode> STRING_() { return getTokens(SQLServerStatementParser.STRING_); }
18815 		public TerminalNode STRING_(int i) {
18816 			return getToken(SQLServerStatementParser.STRING_, i);
18817 		}
18818 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
18819 		public SchemaNameContext schemaName() {
18820 			return getRuleContext(SchemaNameContext.class,0);
18821 		}
18822 		public FileGroupContext(ParserRuleContext parent, int invokingState) {
18823 			super(parent, invokingState);
18824 		}
18825 		@Override public int getRuleIndex() { return RULE_fileGroup; }
18826 		@Override
18827 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18828 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileGroup(this);
18829 			else return visitor.visitChildren(this);
18830 		}
18831 	}
18832 
18833 	public final FileGroupContext fileGroup() throws RecognitionException {
18834 		FileGroupContext _localctx = new FileGroupContext(_ctx, getState());
18835 		enterRule(_localctx, 406, RULE_fileGroup);
18836 		int _la;
18837 		try {
18838 			enterOuterAlt(_localctx, 1);
18839 			{
18840 			setState(2823);
18841 			_errHandler.sync(this);
18842 			_la = _input.LA(1);
18843 			if (_la==TEXTIMAGE_ON) {
18844 				{
18845 				setState(2818);
18846 				match(TEXTIMAGE_ON);
18847 				setState(2821);
18848 				_errHandler.sync(this);
18849 				switch (_input.LA(1)) {
18850 				case IDENTIFIER_:
18851 					{
18852 					setState(2819);
18853 					ignoredIdentifier();
18854 					}
18855 					break;
18856 				case STRING_:
18857 					{
18858 					setState(2820);
18859 					match(STRING_);
18860 					}
18861 					break;
18862 				default:
18863 					throw new NoViableAltException(this);
18864 				}
18865 				}
18866 			}
18867 
18868 			setState(2832);
18869 			_errHandler.sync(this);
18870 			_la = _input.LA(1);
18871 			if (_la==FILESTREAM_ON || _la==IDENTIFIER_) {
18872 				{
18873 				setState(2830);
18874 				_errHandler.sync(this);
18875 				switch (_input.LA(1)) {
18876 				case FILESTREAM_ON:
18877 					{
18878 					setState(2825);
18879 					match(FILESTREAM_ON);
18880 					{
18881 					setState(2826);
18882 					schemaName();
18883 					}
18884 					}
18885 					break;
18886 				case IDENTIFIER_:
18887 					{
18888 					setState(2827);
18889 					ignoredIdentifier();
18890 					setState(2828);
18891 					match(STRING_);
18892 					}
18893 					break;
18894 				default:
18895 					throw new NoViableAltException(this);
18896 				}
18897 				}
18898 			}
18899 
18900 			setState(2836);
18901 			_errHandler.sync(this);
18902 			switch ( getInterpreter().adaptivePredict(_input,241,_ctx) ) {
18903 			case 1:
18904 				{
18905 				setState(2834);
18906 				match(WITH);
18907 				setState(2835);
18908 				tableOptions();
18909 				}
18910 				break;
18911 			}
18912 			}
18913 		}
18914 		catch (RecognitionException re) {
18915 			_localctx.exception = re;
18916 			_errHandler.reportError(this, re);
18917 			_errHandler.recover(this, re);
18918 		}
18919 		finally {
18920 			exitRule();
18921 		}
18922 		return _localctx;
18923 	}
18924 
18925 	public static class TableOptionsContext extends ParserRuleContext {
18926 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18927 		public List<TableOptionContext> tableOption() {
18928 			return getRuleContexts(TableOptionContext.class);
18929 		}
18930 		public TableOptionContext tableOption(int i) {
18931 			return getRuleContext(TableOptionContext.class,i);
18932 		}
18933 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18934 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18935 		public TerminalNode COMMA_(int i) {
18936 			return getToken(SQLServerStatementParser.COMMA_, i);
18937 		}
18938 		public TableOptionsContext(ParserRuleContext parent, int invokingState) {
18939 			super(parent, invokingState);
18940 		}
18941 		@Override public int getRuleIndex() { return RULE_tableOptions; }
18942 		@Override
18943 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18944 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOptions(this);
18945 			else return visitor.visitChildren(this);
18946 		}
18947 	}
18948 
18949 	public final TableOptionsContext tableOptions() throws RecognitionException {
18950 		TableOptionsContext _localctx = new TableOptionsContext(_ctx, getState());
18951 		enterRule(_localctx, 408, RULE_tableOptions);
18952 		int _la;
18953 		try {
18954 			enterOuterAlt(_localctx, 1);
18955 			{
18956 			setState(2838);
18957 			match(LP_);
18958 			setState(2839);
18959 			tableOption();
18960 			setState(2844);
18961 			_errHandler.sync(this);
18962 			_la = _input.LA(1);
18963 			while (_la==COMMA_) {
18964 				{
18965 				{
18966 				setState(2840);
18967 				match(COMMA_);
18968 				setState(2841);
18969 				tableOption();
18970 				}
18971 				}
18972 				setState(2846);
18973 				_errHandler.sync(this);
18974 				_la = _input.LA(1);
18975 			}
18976 			setState(2847);
18977 			match(RP_);
18978 			}
18979 		}
18980 		catch (RecognitionException re) {
18981 			_localctx.exception = re;
18982 			_errHandler.reportError(this, re);
18983 			_errHandler.recover(this, re);
18984 		}
18985 		finally {
18986 			exitRule();
18987 		}
18988 		return _localctx;
18989 	}
18990 
18991 	public static class TableOptionContext extends ParserRuleContext {
18992 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
18993 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
18994 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
18995 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
18996 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
18997 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
18998 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
18999 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19000 		public PartitionExpressionsContext partitionExpressions() {
19001 			return getRuleContext(PartitionExpressionsContext.class,0);
19002 		}
19003 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19004 		public TerminalNode FILETABLE_DIRECTORY() { return getToken(SQLServerStatementParser.FILETABLE_DIRECTORY, 0); }
19005 		public IgnoredIdentifierContext ignoredIdentifier() {
19006 			return getRuleContext(IgnoredIdentifierContext.class,0);
19007 		}
19008 		public TerminalNode FILETABLE_COLLATE_FILENAME() { return getToken(SQLServerStatementParser.FILETABLE_COLLATE_FILENAME, 0); }
19009 		public CollationNameContext collationName() {
19010 			return getRuleContext(CollationNameContext.class,0);
19011 		}
19012 		public TerminalNode DATABASE_DEAULT() { return getToken(SQLServerStatementParser.DATABASE_DEAULT, 0); }
19013 		public TerminalNode FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME, 0); }
19014 		public TerminalNode FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME, 0); }
19015 		public TerminalNode FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME, 0); }
19016 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
19017 		public OnHistoryTableClauseContext onHistoryTableClause() {
19018 			return getRuleContext(OnHistoryTableClauseContext.class,0);
19019 		}
19020 		public TerminalNode REMOTE_DATA_ARCHIVE() { return getToken(SQLServerStatementParser.REMOTE_DATA_ARCHIVE, 0); }
19021 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
19022 		public MigrationState_Context migrationState_() {
19023 			return getRuleContext(MigrationState_Context.class,0);
19024 		}
19025 		public TableStretchOptionsContext tableStretchOptions() {
19026 			return getRuleContext(TableStretchOptionsContext.class,0);
19027 		}
19028 		public TableOperationOptionContext tableOperationOption() {
19029 			return getRuleContext(TableOperationOptionContext.class,0);
19030 		}
19031 		public DistributionOptionContext distributionOption() {
19032 			return getRuleContext(DistributionOptionContext.class,0);
19033 		}
19034 		public DataWareHouseTableOptionContext dataWareHouseTableOption() {
19035 			return getRuleContext(DataWareHouseTableOptionContext.class,0);
19036 		}
19037 		public DataDelectionOptionContext dataDelectionOption() {
19038 			return getRuleContext(DataDelectionOptionContext.class,0);
19039 		}
19040 		public DataWareHousePartitionOptionContext dataWareHousePartitionOption() {
19041 			return getRuleContext(DataWareHousePartitionOptionContext.class,0);
19042 		}
19043 		public TableOptionContext(ParserRuleContext parent, int invokingState) {
19044 			super(parent, invokingState);
19045 		}
19046 		@Override public int getRuleIndex() { return RULE_tableOption; }
19047 		@Override
19048 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19049 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOption(this);
19050 			else return visitor.visitChildren(this);
19051 		}
19052 	}
19053 
19054 	public final TableOptionContext tableOption() throws RecognitionException {
19055 		TableOptionContext _localctx = new TableOptionContext(_ctx, getState());
19056 		enterRule(_localctx, 410, RULE_tableOption);
19057 		int _la;
19058 		try {
19059 			setState(2899);
19060 			_errHandler.sync(this);
19061 			switch ( getInterpreter().adaptivePredict(_input,248,_ctx) ) {
19062 			case 1:
19063 				enterOuterAlt(_localctx, 1);
19064 				{
19065 				setState(2849);
19066 				match(DATA_COMPRESSION);
19067 				setState(2850);
19068 				match(EQ_);
19069 				setState(2851);
19070 				_la = _input.LA(1);
19071 				if ( !(((((_la - 241)) & ~0x3f) == 0 && ((1L << (_la - 241)) & ((1L << (ROW - 241)) | (1L << (NONE - 241)) | (1L << (PAGE - 241)))) != 0)) ) {
19072 				_errHandler.recoverInline(this);
19073 				}
19074 				else {
19075 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19076 					_errHandler.reportMatch(this);
19077 					consume();
19078 				}
19079 				setState(2858);
19080 				_errHandler.sync(this);
19081 				_la = _input.LA(1);
19082 				if (_la==ON) {
19083 					{
19084 					setState(2852);
19085 					match(ON);
19086 					setState(2853);
19087 					match(PARTITIONS);
19088 					setState(2854);
19089 					match(LP_);
19090 					setState(2855);
19091 					partitionExpressions();
19092 					setState(2856);
19093 					match(RP_);
19094 					}
19095 				}
19096 
19097 				}
19098 				break;
19099 			case 2:
19100 				enterOuterAlt(_localctx, 2);
19101 				{
19102 				setState(2860);
19103 				match(FILETABLE_DIRECTORY);
19104 				setState(2861);
19105 				match(EQ_);
19106 				setState(2862);
19107 				ignoredIdentifier();
19108 				}
19109 				break;
19110 			case 3:
19111 				enterOuterAlt(_localctx, 3);
19112 				{
19113 				setState(2863);
19114 				match(FILETABLE_COLLATE_FILENAME);
19115 				setState(2864);
19116 				match(EQ_);
19117 				setState(2867);
19118 				_errHandler.sync(this);
19119 				switch (_input.LA(1)) {
19120 				case IDENTIFIER_:
19121 				case STRING_:
19122 					{
19123 					setState(2865);
19124 					collationName();
19125 					}
19126 					break;
19127 				case DATABASE_DEAULT:
19128 					{
19129 					setState(2866);
19130 					match(DATABASE_DEAULT);
19131 					}
19132 					break;
19133 				default:
19134 					throw new NoViableAltException(this);
19135 				}
19136 				}
19137 				break;
19138 			case 4:
19139 				enterOuterAlt(_localctx, 4);
19140 				{
19141 				setState(2869);
19142 				match(FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME);
19143 				setState(2870);
19144 				match(EQ_);
19145 				setState(2871);
19146 				ignoredIdentifier();
19147 				}
19148 				break;
19149 			case 5:
19150 				enterOuterAlt(_localctx, 5);
19151 				{
19152 				setState(2872);
19153 				match(FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME);
19154 				setState(2873);
19155 				match(EQ_);
19156 				setState(2874);
19157 				ignoredIdentifier();
19158 				}
19159 				break;
19160 			case 6:
19161 				enterOuterAlt(_localctx, 6);
19162 				{
19163 				setState(2875);
19164 				match(FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME);
19165 				setState(2876);
19166 				match(EQ_);
19167 				setState(2877);
19168 				ignoredIdentifier();
19169 				}
19170 				break;
19171 			case 7:
19172 				enterOuterAlt(_localctx, 7);
19173 				{
19174 				setState(2878);
19175 				match(SYSTEM_VERSIONING);
19176 				setState(2879);
19177 				match(EQ_);
19178 				setState(2880);
19179 				match(ON);
19180 				setState(2882);
19181 				_errHandler.sync(this);
19182 				_la = _input.LA(1);
19183 				if (_la==LP_) {
19184 					{
19185 					setState(2881);
19186 					onHistoryTableClause();
19187 					}
19188 				}
19189 
19190 				}
19191 				break;
19192 			case 8:
19193 				enterOuterAlt(_localctx, 8);
19194 				{
19195 				setState(2884);
19196 				match(REMOTE_DATA_ARCHIVE);
19197 				setState(2885);
19198 				match(EQ_);
19199 				setState(2892);
19200 				_errHandler.sync(this);
19201 				switch (_input.LA(1)) {
19202 				case ON:
19203 					{
19204 					setState(2886);
19205 					match(ON);
19206 					setState(2888);
19207 					_errHandler.sync(this);
19208 					_la = _input.LA(1);
19209 					if (_la==LP_) {
19210 						{
19211 						setState(2887);
19212 						tableStretchOptions();
19213 						}
19214 					}
19215 
19216 					}
19217 					break;
19218 				case OFF:
19219 					{
19220 					setState(2890);
19221 					match(OFF);
19222 					setState(2891);
19223 					migrationState_();
19224 					}
19225 					break;
19226 				default:
19227 					throw new NoViableAltException(this);
19228 				}
19229 				}
19230 				break;
19231 			case 9:
19232 				enterOuterAlt(_localctx, 9);
19233 				{
19234 				setState(2894);
19235 				tableOperationOption();
19236 				}
19237 				break;
19238 			case 10:
19239 				enterOuterAlt(_localctx, 10);
19240 				{
19241 				setState(2895);
19242 				distributionOption();
19243 				}
19244 				break;
19245 			case 11:
19246 				enterOuterAlt(_localctx, 11);
19247 				{
19248 				setState(2896);
19249 				dataWareHouseTableOption();
19250 				}
19251 				break;
19252 			case 12:
19253 				enterOuterAlt(_localctx, 12);
19254 				{
19255 				setState(2897);
19256 				dataDelectionOption();
19257 				}
19258 				break;
19259 			case 13:
19260 				enterOuterAlt(_localctx, 13);
19261 				{
19262 				setState(2898);
19263 				dataWareHousePartitionOption();
19264 				}
19265 				break;
19266 			}
19267 		}
19268 		catch (RecognitionException re) {
19269 			_localctx.exception = re;
19270 			_errHandler.reportError(this, re);
19271 			_errHandler.recover(this, re);
19272 		}
19273 		finally {
19274 			exitRule();
19275 		}
19276 		return _localctx;
19277 	}
19278 
19279 	public static class DataDelectionOptionContext extends ParserRuleContext {
19280 		public TerminalNode DATA_DELETION() { return getToken(SQLServerStatementParser.DATA_DELETION, 0); }
19281 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
19282 		public TerminalNode EQ_(int i) {
19283 			return getToken(SQLServerStatementParser.EQ_, i);
19284 		}
19285 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
19286 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19287 		public TerminalNode FILTER_COLUMN() { return getToken(SQLServerStatementParser.FILTER_COLUMN, 0); }
19288 		public ColumnNameContext columnName() {
19289 			return getRuleContext(ColumnNameContext.class,0);
19290 		}
19291 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
19292 		public TerminalNode RETENTION_PERIOD() { return getToken(SQLServerStatementParser.RETENTION_PERIOD, 0); }
19293 		public HistoryRetentionPeriodContext historyRetentionPeriod() {
19294 			return getRuleContext(HistoryRetentionPeriodContext.class,0);
19295 		}
19296 		public DataDelectionOptionContext(ParserRuleContext parent, int invokingState) {
19297 			super(parent, invokingState);
19298 		}
19299 		@Override public int getRuleIndex() { return RULE_dataDelectionOption; }
19300 		@Override
19301 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19302 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataDelectionOption(this);
19303 			else return visitor.visitChildren(this);
19304 		}
19305 	}
19306 
19307 	public final DataDelectionOptionContext dataDelectionOption() throws RecognitionException {
19308 		DataDelectionOptionContext _localctx = new DataDelectionOptionContext(_ctx, getState());
19309 		enterRule(_localctx, 412, RULE_dataDelectionOption);
19310 		try {
19311 			enterOuterAlt(_localctx, 1);
19312 			{
19313 			setState(2901);
19314 			match(DATA_DELETION);
19315 			setState(2902);
19316 			match(EQ_);
19317 			setState(2903);
19318 			match(ON);
19319 			{
19320 			setState(2904);
19321 			match(LP_);
19322 			setState(2905);
19323 			match(FILTER_COLUMN);
19324 			setState(2906);
19325 			match(EQ_);
19326 			setState(2907);
19327 			columnName();
19328 			setState(2908);
19329 			match(COMMA_);
19330 			setState(2909);
19331 			match(RETENTION_PERIOD);
19332 			setState(2910);
19333 			match(EQ_);
19334 			setState(2911);
19335 			historyRetentionPeriod();
19336 			}
19337 			}
19338 		}
19339 		catch (RecognitionException re) {
19340 			_localctx.exception = re;
19341 			_errHandler.reportError(this, re);
19342 			_errHandler.recover(this, re);
19343 		}
19344 		finally {
19345 			exitRule();
19346 		}
19347 		return _localctx;
19348 	}
19349 
19350 	public static class TableStretchOptionsContext extends ParserRuleContext {
19351 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19352 		public List<TableStretchOptionContext> tableStretchOption() {
19353 			return getRuleContexts(TableStretchOptionContext.class);
19354 		}
19355 		public TableStretchOptionContext tableStretchOption(int i) {
19356 			return getRuleContext(TableStretchOptionContext.class,i);
19357 		}
19358 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19359 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
19360 		public TerminalNode COMMA_(int i) {
19361 			return getToken(SQLServerStatementParser.COMMA_, i);
19362 		}
19363 		public TableStretchOptionsContext(ParserRuleContext parent, int invokingState) {
19364 			super(parent, invokingState);
19365 		}
19366 		@Override public int getRuleIndex() { return RULE_tableStretchOptions; }
19367 		@Override
19368 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19369 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableStretchOptions(this);
19370 			else return visitor.visitChildren(this);
19371 		}
19372 	}
19373 
19374 	public final TableStretchOptionsContext tableStretchOptions() throws RecognitionException {
19375 		TableStretchOptionsContext _localctx = new TableStretchOptionsContext(_ctx, getState());
19376 		enterRule(_localctx, 414, RULE_tableStretchOptions);
19377 		int _la;
19378 		try {
19379 			enterOuterAlt(_localctx, 1);
19380 			{
19381 			setState(2913);
19382 			match(LP_);
19383 			setState(2914);
19384 			tableStretchOption();
19385 			setState(2919);
19386 			_errHandler.sync(this);
19387 			_la = _input.LA(1);
19388 			while (_la==COMMA_) {
19389 				{
19390 				{
19391 				setState(2915);
19392 				match(COMMA_);
19393 				setState(2916);
19394 				tableStretchOption();
19395 				}
19396 				}
19397 				setState(2921);
19398 				_errHandler.sync(this);
19399 				_la = _input.LA(1);
19400 			}
19401 			setState(2922);
19402 			match(RP_);
19403 			}
19404 		}
19405 		catch (RecognitionException re) {
19406 			_localctx.exception = re;
19407 			_errHandler.reportError(this, re);
19408 			_errHandler.recover(this, re);
19409 		}
19410 		finally {
19411 			exitRule();
19412 		}
19413 		return _localctx;
19414 	}
19415 
19416 	public static class TableStretchOptionContext extends ParserRuleContext {
19417 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
19418 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
19419 		public TerminalNode EQ_(int i) {
19420 			return getToken(SQLServerStatementParser.EQ_, i);
19421 		}
19422 		public TerminalNode OUTBOUND() { return getToken(SQLServerStatementParser.OUTBOUND, 0); }
19423 		public TerminalNode INBOUND() { return getToken(SQLServerStatementParser.INBOUND, 0); }
19424 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
19425 		public TerminalNode FILTER_PREDICATE() { return getToken(SQLServerStatementParser.FILTER_PREDICATE, 0); }
19426 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
19427 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
19428 		public FunctionCallContext functionCall() {
19429 			return getRuleContext(FunctionCallContext.class,0);
19430 		}
19431 		public TableStretchOptionContext(ParserRuleContext parent, int invokingState) {
19432 			super(parent, invokingState);
19433 		}
19434 		@Override public int getRuleIndex() { return RULE_tableStretchOption; }
19435 		@Override
19436 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19437 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableStretchOption(this);
19438 			else return visitor.visitChildren(this);
19439 		}
19440 	}
19441 
19442 	public final TableStretchOptionContext tableStretchOption() throws RecognitionException {
19443 		TableStretchOptionContext _localctx = new TableStretchOptionContext(_ctx, getState());
19444 		enterRule(_localctx, 416, RULE_tableStretchOption);
19445 		int _la;
19446 		try {
19447 			enterOuterAlt(_localctx, 1);
19448 			{
19449 			setState(2931);
19450 			_errHandler.sync(this);
19451 			_la = _input.LA(1);
19452 			if (_la==FILTER_PREDICATE) {
19453 				{
19454 				setState(2924);
19455 				match(FILTER_PREDICATE);
19456 				setState(2925);
19457 				match(EQ_);
19458 				setState(2928);
19459 				_errHandler.sync(this);
19460 				switch (_input.LA(1)) {
19461 				case NULL:
19462 					{
19463 					setState(2926);
19464 					match(NULL);
19465 					}
19466 					break;
19467 				case TRUNCATE:
19468 				case SCHEMA:
19469 				case COLUMNS:
19470 				case PRECISION:
19471 				case FUNCTION:
19472 				case TRIGGER:
19473 				case CAST:
19474 				case SUBSTRING:
19475 				case OFF:
19476 				case IF:
19477 				case GROUP:
19478 				case LIMIT:
19479 				case OFFSET:
19480 				case SAVEPOINT:
19481 				case BOOLEAN:
19482 				case CHAR:
19483 				case ARRAY:
19484 				case INTERVAL:
19485 				case DATE:
19486 				case LOCALTIME:
19487 				case LOCALTIMESTAMP:
19488 				case QUARTER:
19489 				case MONTH:
19490 				case WEEK:
19491 				case DAY:
19492 				case SECOND:
19493 				case MICROSECOND:
19494 				case MAX:
19495 				case MIN:
19496 				case SUM:
19497 				case COUNT:
19498 				case AVG:
19499 				case ENABLE:
19500 				case DISABLE:
19501 				case INSTANCE:
19502 				case DO:
19503 				case DEFINER:
19504 				case SQL:
19505 				case CASCADED:
19506 				case LOCAL:
19507 				case NEXT:
19508 				case NAME:
19509 				case INTEGER:
19510 				case TYPE:
19511 				case TEXT:
19512 				case VIEWS:
19513 				case READ_ONLY:
19514 				case DATABASE:
19515 				case RETURNS:
19516 				case DATEPART:
19517 				case PASSWORD:
19518 				case BINARY:
19519 				case HIDDEN_:
19520 				case MOD:
19521 				case PARTITION:
19522 				case PARTITIONS:
19523 				case TOP:
19524 				case ROW:
19525 				case ROWS:
19526 				case XOR:
19527 				case ALWAYS:
19528 				case ROLE:
19529 				case START:
19530 				case ALGORITHM:
19531 				case AUTO:
19532 				case BLOCKERS:
19533 				case CLUSTERED:
19534 				case NONCLUSTERED:
19535 				case COLUMNSTORE:
19536 				case CONTENT:
19537 				case CONVERT:
19538 				case YEARS:
19539 				case MONTHS:
19540 				case WEEKS:
19541 				case DAYS:
19542 				case MINUTES:
19543 				case DENY:
19544 				case DETERMINISTIC:
19545 				case DISTRIBUTION:
19546 				case DOCUMENT:
19547 				case DURABILITY:
19548 				case ENCRYPTED:
19549 				case FILESTREAM:
19550 				case FILETABLE:
19551 				case FILLFACTOR:
19552 				case FOLLOWING:
19553 				case HASH:
19554 				case HEAP:
19555 				case INBOUND:
19556 				case OUTBOUND:
19557 				case UNBOUNDED:
19558 				case INFINITE:
19559 				case LOGIN:
19560 				case MASKED:
19561 				case MAXDOP:
19562 				case MOVE:
19563 				case NOCHECK:
19564 				case OBJECT:
19565 				case ONLINE:
19566 				case OVER:
19567 				case PAGE:
19568 				case PAUSED:
19569 				case PERIOD:
19570 				case PERSISTED:
19571 				case PRECEDING:
19572 				case RANDOMIZED:
19573 				case RANGE:
19574 				case REBUILD:
19575 				case REPLICATE:
19576 				case REPLICATION:
19577 				case RESUMABLE:
19578 				case ROWGUIDCOL:
19579 				case SAVE:
19580 				case SELF:
19581 				case SPARSE:
19582 				case SWITCH:
19583 				case TRAN:
19584 				case TRANCOUNT:
19585 				case CONTROL:
19586 				case CONCAT:
19587 				case TAKE:
19588 				case OWNERSHIP:
19589 				case DEFINITION:
19590 				case APPLICATION:
19591 				case ASSEMBLY:
19592 				case SYMMETRIC:
19593 				case ASYMMETRIC:
19594 				case SERVER:
19595 				case RECEIVE:
19596 				case CHANGE:
19597 				case TRACE:
19598 				case TRACKING:
19599 				case RESOURCES:
19600 				case SETTINGS:
19601 				case STATE:
19602 				case AVAILABILITY:
19603 				case CREDENTIAL:
19604 				case ENDPOINT:
19605 				case EVENT:
19606 				case NOTIFICATION:
19607 				case LINKED:
19608 				case AUDIT:
19609 				case DDL:
19610 				case XML:
19611 				case IMPERSONATE:
19612 				case SECURABLES:
19613 				case AUTHENTICATE:
19614 				case EXTERNAL:
19615 				case ACCESS:
19616 				case ADMINISTER:
19617 				case BULK:
19618 				case OPERATIONS:
19619 				case UNSAFE:
19620 				case SHUTDOWN:
19621 				case SCOPED:
19622 				case CONFIGURATION:
19623 				case DATASPACE:
19624 				case SERVICE:
19625 				case CERTIFICATE:
19626 				case CONTRACT:
19627 				case ENCRYPTION:
19628 				case MASTER:
19629 				case DATA:
19630 				case SOURCE:
19631 				case FILE:
19632 				case FORMAT:
19633 				case LIBRARY:
19634 				case FULLTEXT:
19635 				case MASK:
19636 				case UNMASK:
19637 				case MESSAGE:
19638 				case REMOTE:
19639 				case BINDING:
19640 				case ROUTE:
19641 				case SECURITY:
19642 				case POLICY:
19643 				case AGGREGATE:
19644 				case QUEUE:
19645 				case RULE:
19646 				case SYNONYM:
19647 				case COLLECTION:
19648 				case SCRIPT:
19649 				case KILL:
19650 				case BACKUP:
19651 				case LOG:
19652 				case SHOWPLAN:
19653 				case SUBSCRIBE:
19654 				case QUERY:
19655 				case NOTIFICATIONS:
19656 				case CHECKPOINT:
19657 				case SEQUENCE:
19658 				case ABORT_AFTER_WAIT:
19659 				case ALLOW_PAGE_LOCKS:
19660 				case ALLOW_ROW_LOCKS:
19661 				case ALL_SPARSE_COLUMNS:
19662 				case BUCKET_COUNT:
19663 				case COLUMNSTORE_ARCHIVE:
19664 				case COLUMN_ENCRYPTION_KEY:
19665 				case COLUMN_SET:
19666 				case COMPRESSION_DELAY:
19667 				case DATABASE_DEAULT:
19668 				case DATA_COMPRESSION:
19669 				case DATA_CONSISTENCY_CHECK:
19670 				case ENCRYPTION_TYPE:
19671 				case SYSTEM_TIME:
19672 				case SYSTEM_VERSIONING:
19673 				case TEXTIMAGE_ON:
19674 				case WAIT_AT_LOW_PRIORITY:
19675 				case STATISTICS_INCREMENTAL:
19676 				case STATISTICS_NORECOMPUTE:
19677 				case ROUND_ROBIN:
19678 				case SCHEMA_AND_DATA:
19679 				case SCHEMA_ONLY:
19680 				case SORT_IN_TEMPDB:
19681 				case IGNORE_DUP_KEY:
19682 				case IMPLICIT_TRANSACTIONS:
19683 				case MAX_DURATION:
19684 				case MEMORY_OPTIMIZED:
19685 				case MIGRATION_STATE:
19686 				case PAD_INDEX:
19687 				case REMOTE_DATA_ARCHIVE:
19688 				case FILESTREAM_ON:
19689 				case FILETABLE_COLLATE_FILENAME:
19690 				case FILETABLE_DIRECTORY:
19691 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
19692 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
19693 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
19694 				case FILTER_PREDICATE:
19695 				case HISTORY_RETENTION_PERIOD:
19696 				case HISTORY_TABLE:
19697 				case LOCK_ESCALATION:
19698 				case DROP_EXISTING:
19699 				case ROW_NUMBER:
19700 				case FIRST:
19701 				case DATETIME2:
19702 				case OUTPUT:
19703 				case INSERTED:
19704 				case DELETED:
19705 				case FILENAME:
19706 				case SIZE:
19707 				case MAXSIZE:
19708 				case FILEGROWTH:
19709 				case UNLIMITED:
19710 				case KB:
19711 				case MB:
19712 				case GB:
19713 				case TB:
19714 				case CONTAINS:
19715 				case MEMORY_OPTIMIZED_DATA:
19716 				case FILEGROUP:
19717 				case NON_TRANSACTED_ACCESS:
19718 				case DB_CHAINING:
19719 				case TRUSTWORTHY:
19720 				case FORWARD_ONLY:
19721 				case KEYSET:
19722 				case FAST_FORWARD:
19723 				case SCROLL_LOCKS:
19724 				case OPTIMISTIC:
19725 				case TYPE_WARNING:
19726 				case SCHEMABINDING:
19727 				case CALLER:
19728 				case OWNER:
19729 				case SNAPSHOT:
19730 				case REPEATABLE:
19731 				case SERIALIZABLE:
19732 				case NATIVE_COMPILATION:
19733 				case VIEW_METADATA:
19734 				case INSTEAD:
19735 				case APPEND:
19736 				case INCREMENT:
19737 				case CACHE:
19738 				case MINVALUE:
19739 				case MAXVALUE:
19740 				case RESTART:
19741 				case LOB_COMPACTION:
19742 				case COMPRESS_ALL_ROW_GROUPS:
19743 				case REORGANIZE:
19744 				case RESUME:
19745 				case PAUSE:
19746 				case ABORT:
19747 				case ACCELERATED_DATABASE_RECOVERY:
19748 				case PERSISTENT_VERSION_STORE_FILEGROUP:
19749 				case IMMEDIATE:
19750 				case NO_WAIT:
19751 				case TARGET_RECOVERY_TIME:
19752 				case SECONDS:
19753 				case HONOR_BROKER_PRIORITY:
19754 				case ERROR_BROKER_CONVERSATIONS:
19755 				case NEW_BROKER:
19756 				case DISABLE_BROKER:
19757 				case ENABLE_BROKER:
19758 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
19759 				case READ_COMMITTED_SNAPSHOT:
19760 				case ALLOW_SNAPSHOT_ISOLATION:
19761 				case RECURSIVE_TRIGGERS:
19762 				case QUOTED_IDENTIFIER:
19763 				case NUMERIC_ROUNDABORT:
19764 				case CONCAT_NULL_YIELDS_NULL:
19765 				case COMPATIBILITY_LEVEL:
19766 				case ARITHABORT:
19767 				case ANSI_WARNINGS:
19768 				case ANSI_PADDING:
19769 				case ANSI_NULLS:
19770 				case ANSI_NULL_DEFAULT:
19771 				case PAGE_VERIFY:
19772 				case CHECKSUM:
19773 				case TORN_PAGE_DETECTION:
19774 				case BULK_LOGGED:
19775 				case RECOVERY:
19776 				case TOTAL_EXECUTION_CPU_TIME_MS:
19777 				case TOTAL_COMPILE_CPU_TIME_MS:
19778 				case STALE_CAPTURE_POLICY_THRESHOLD:
19779 				case EXECUTION_COUNT:
19780 				case QUERY_CAPTURE_POLICY:
19781 				case WAIT_STATS_CAPTURE_MODE:
19782 				case MAX_PLANS_PER_QUERY:
19783 				case QUERY_CAPTURE_MODE:
19784 				case SIZE_BASED_CLEANUP_MODE:
19785 				case INTERVAL_LENGTH_MINUTES:
19786 				case MAX_STORAGE_SIZE_MB:
19787 				case DATA_FLUSH_INTERVAL_SECONDS:
19788 				case CLEANUP_POLICY:
19789 				case CUSTOM:
19790 				case STALE_QUERY_THRESHOLD_DAYS:
19791 				case OPERATION_MODE:
19792 				case QUERY_STORE:
19793 				case CURSOR_DEFAULT:
19794 				case GLOBAL:
19795 				case CURSOR_CLOSE_ON_COMMIT:
19796 				case HOURS:
19797 				case CHANGE_RETENTION:
19798 				case AUTO_CLEANUP:
19799 				case CHANGE_TRACKING:
19800 				case AUTOMATIC_TUNING:
19801 				case FORCE_LAST_GOOD_PLAN:
19802 				case AUTO_UPDATE_STATISTICS_ASYNC:
19803 				case AUTO_UPDATE_STATISTICS:
19804 				case AUTO_SHRINK:
19805 				case AUTO_CREATE_STATISTICS:
19806 				case INCREMENTAL:
19807 				case AUTO_CLOSE:
19808 				case DATA_RETENTION:
19809 				case TEMPORAL_HISTORY_RETENTION:
19810 				case EDITION:
19811 				case MIXED_PAGE_ALLOCATION:
19812 				case DISABLED:
19813 				case ALLOWED:
19814 				case HADR:
19815 				case MULTI_USER:
19816 				case RESTRICTED_USER:
19817 				case SINGLE_USER:
19818 				case OFFLINE:
19819 				case EMERGENCY:
19820 				case SUSPEND:
19821 				case DATE_CORRELATION_OPTIMIZATION:
19822 				case ELASTIC_POOL:
19823 				case SERVICE_OBJECTIVE:
19824 				case DATABASE_NAME:
19825 				case ALLOW_CONNECTIONS:
19826 				case GEO:
19827 				case NAMED:
19828 				case DATEFIRST:
19829 				case BACKUP_STORAGE_REDUNDANCY:
19830 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
19831 				case SECONDARY:
19832 				case FAILOVER:
19833 				case DEFAULT_FULLTEXT_LANGUAGE:
19834 				case DEFAULT_LANGUAGE:
19835 				case INLINE:
19836 				case NESTED_TRIGGERS:
19837 				case TRANSFORM_NOISE_WORDS:
19838 				case TWO_DIGIT_YEAR_CUTOFF:
19839 				case PERSISTENT_LOG_BUFFER:
19840 				case DIRECTORY_NAME:
19841 				case DATEFORMAT:
19842 				case DELAYED_DURABILITY:
19843 				case AUTHORIZATION:
19844 				case TRANSFER:
19845 				case PROVIDER:
19846 				case SEARCH:
19847 				case MEMBER:
19848 				case OPENJSON:
19849 				case OPENROWSET:
19850 				case IDENTIFIER_:
19851 				case DELIMITED_IDENTIFIER_:
19852 					{
19853 					setState(2927);
19854 					functionCall();
19855 					}
19856 					break;
19857 				default:
19858 					throw new NoViableAltException(this);
19859 				}
19860 				setState(2930);
19861 				match(COMMA_);
19862 				}
19863 			}
19864 
19865 			setState(2933);
19866 			match(MIGRATION_STATE);
19867 			setState(2934);
19868 			match(EQ_);
19869 			setState(2935);
19870 			_la = _input.LA(1);
19871 			if ( !(((((_la - 286)) & ~0x3f) == 0 && ((1L << (_la - 286)) & ((1L << (INBOUND - 286)) | (1L << (OUTBOUND - 286)) | (1L << (PAUSED - 286)))) != 0)) ) {
19872 			_errHandler.recoverInline(this);
19873 			}
19874 			else {
19875 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19876 				_errHandler.reportMatch(this);
19877 				consume();
19878 			}
19879 			}
19880 		}
19881 		catch (RecognitionException re) {
19882 			_localctx.exception = re;
19883 			_errHandler.reportError(this, re);
19884 			_errHandler.recover(this, re);
19885 		}
19886 		finally {
19887 			exitRule();
19888 		}
19889 		return _localctx;
19890 	}
19891 
19892 	public static class MigrationState_Context extends ParserRuleContext {
19893 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19894 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
19895 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
19896 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
19897 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19898 		public MigrationState_Context(ParserRuleContext parent, int invokingState) {
19899 			super(parent, invokingState);
19900 		}
19901 		@Override public int getRuleIndex() { return RULE_migrationState_; }
19902 		@Override
19903 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19904 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMigrationState_(this);
19905 			else return visitor.visitChildren(this);
19906 		}
19907 	}
19908 
19909 	public final MigrationState_Context migrationState_() throws RecognitionException {
19910 		MigrationState_Context _localctx = new MigrationState_Context(_ctx, getState());
19911 		enterRule(_localctx, 418, RULE_migrationState_);
19912 		try {
19913 			enterOuterAlt(_localctx, 1);
19914 			{
19915 			setState(2937);
19916 			match(LP_);
19917 			setState(2938);
19918 			match(MIGRATION_STATE);
19919 			setState(2939);
19920 			match(EQ_);
19921 			setState(2940);
19922 			match(PAUSED);
19923 			setState(2941);
19924 			match(RP_);
19925 			}
19926 		}
19927 		catch (RecognitionException re) {
19928 			_localctx.exception = re;
19929 			_errHandler.reportError(this, re);
19930 			_errHandler.recover(this, re);
19931 		}
19932 		finally {
19933 			exitRule();
19934 		}
19935 		return _localctx;
19936 	}
19937 
19938 	public static class TableOperationOptionContext extends ParserRuleContext {
19939 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
19940 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
19941 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
19942 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
19943 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
19944 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
19945 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
19946 		public OnHistoryTableClauseContext onHistoryTableClause() {
19947 			return getRuleContext(OnHistoryTableClauseContext.class,0);
19948 		}
19949 		public TableOperationOptionContext(ParserRuleContext parent, int invokingState) {
19950 			super(parent, invokingState);
19951 		}
19952 		@Override public int getRuleIndex() { return RULE_tableOperationOption; }
19953 		@Override
19954 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19955 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOperationOption(this);
19956 			else return visitor.visitChildren(this);
19957 		}
19958 	}
19959 
19960 	public final TableOperationOptionContext tableOperationOption() throws RecognitionException {
19961 		TableOperationOptionContext _localctx = new TableOperationOptionContext(_ctx, getState());
19962 		enterRule(_localctx, 420, RULE_tableOperationOption);
19963 		int _la;
19964 		try {
19965 			setState(2955);
19966 			_errHandler.sync(this);
19967 			switch (_input.LA(1)) {
19968 			case MEMORY_OPTIMIZED:
19969 				enterOuterAlt(_localctx, 1);
19970 				{
19971 				{
19972 				setState(2943);
19973 				match(MEMORY_OPTIMIZED);
19974 				setState(2944);
19975 				match(EQ_);
19976 				setState(2945);
19977 				match(ON);
19978 				}
19979 				}
19980 				break;
19981 			case DURABILITY:
19982 				enterOuterAlt(_localctx, 2);
19983 				{
19984 				{
19985 				setState(2946);
19986 				match(DURABILITY);
19987 				setState(2947);
19988 				match(EQ_);
19989 				setState(2948);
19990 				_la = _input.LA(1);
19991 				if ( !(_la==SCHEMA_AND_DATA || _la==SCHEMA_ONLY) ) {
19992 				_errHandler.recoverInline(this);
19993 				}
19994 				else {
19995 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19996 					_errHandler.reportMatch(this);
19997 					consume();
19998 				}
19999 				}
20000 				}
20001 				break;
20002 			case SYSTEM_VERSIONING:
20003 				enterOuterAlt(_localctx, 3);
20004 				{
20005 				{
20006 				setState(2949);
20007 				match(SYSTEM_VERSIONING);
20008 				setState(2950);
20009 				match(EQ_);
20010 				setState(2951);
20011 				match(ON);
20012 				setState(2953);
20013 				_errHandler.sync(this);
20014 				_la = _input.LA(1);
20015 				if (_la==LP_) {
20016 					{
20017 					setState(2952);
20018 					onHistoryTableClause();
20019 					}
20020 				}
20021 
20022 				}
20023 				}
20024 				break;
20025 			default:
20026 				throw new NoViableAltException(this);
20027 			}
20028 		}
20029 		catch (RecognitionException re) {
20030 			_localctx.exception = re;
20031 			_errHandler.reportError(this, re);
20032 			_errHandler.recover(this, re);
20033 		}
20034 		finally {
20035 			exitRule();
20036 		}
20037 		return _localctx;
20038 	}
20039 
20040 	public static class DistributionOptionContext extends ParserRuleContext {
20041 		public TerminalNode DISTRIBUTION() { return getToken(SQLServerStatementParser.DISTRIBUTION, 0); }
20042 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
20043 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
20044 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20045 		public ColumnNameContext columnName() {
20046 			return getRuleContext(ColumnNameContext.class,0);
20047 		}
20048 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20049 		public TerminalNode ROUND_ROBIN() { return getToken(SQLServerStatementParser.ROUND_ROBIN, 0); }
20050 		public TerminalNode REPLICATE() { return getToken(SQLServerStatementParser.REPLICATE, 0); }
20051 		public DistributionOptionContext(ParserRuleContext parent, int invokingState) {
20052 			super(parent, invokingState);
20053 		}
20054 		@Override public int getRuleIndex() { return RULE_distributionOption; }
20055 		@Override
20056 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20057 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistributionOption(this);
20058 			else return visitor.visitChildren(this);
20059 		}
20060 	}
20061 
20062 	public final DistributionOptionContext distributionOption() throws RecognitionException {
20063 		DistributionOptionContext _localctx = new DistributionOptionContext(_ctx, getState());
20064 		enterRule(_localctx, 422, RULE_distributionOption);
20065 		try {
20066 			enterOuterAlt(_localctx, 1);
20067 			{
20068 			setState(2957);
20069 			match(DISTRIBUTION);
20070 			setState(2958);
20071 			match(EQ_);
20072 			setState(2966);
20073 			_errHandler.sync(this);
20074 			switch (_input.LA(1)) {
20075 			case HASH:
20076 				{
20077 				setState(2959);
20078 				match(HASH);
20079 				setState(2960);
20080 				match(LP_);
20081 				setState(2961);
20082 				columnName();
20083 				setState(2962);
20084 				match(RP_);
20085 				}
20086 				break;
20087 			case ROUND_ROBIN:
20088 				{
20089 				setState(2964);
20090 				match(ROUND_ROBIN);
20091 				}
20092 				break;
20093 			case REPLICATE:
20094 				{
20095 				setState(2965);
20096 				match(REPLICATE);
20097 				}
20098 				break;
20099 			default:
20100 				throw new NoViableAltException(this);
20101 			}
20102 			}
20103 		}
20104 		catch (RecognitionException re) {
20105 			_localctx.exception = re;
20106 			_errHandler.reportError(this, re);
20107 			_errHandler.recover(this, re);
20108 		}
20109 		finally {
20110 			exitRule();
20111 		}
20112 		return _localctx;
20113 	}
20114 
20115 	public static class DataWareHouseTableOptionContext extends ParserRuleContext {
20116 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
20117 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
20118 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
20119 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
20120 		public ColumnNamesContext columnNames() {
20121 			return getRuleContext(ColumnNamesContext.class,0);
20122 		}
20123 		public TerminalNode HEAP() { return getToken(SQLServerStatementParser.HEAP, 0); }
20124 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20125 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20126 		public List<ColumnNameContext> columnName() {
20127 			return getRuleContexts(ColumnNameContext.class);
20128 		}
20129 		public ColumnNameContext columnName(int i) {
20130 			return getRuleContext(ColumnNameContext.class,i);
20131 		}
20132 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20133 		public TerminalNode COMMA_(int i) {
20134 			return getToken(SQLServerStatementParser.COMMA_, i);
20135 		}
20136 		public List<TerminalNode> ASC() { return getTokens(SQLServerStatementParser.ASC); }
20137 		public TerminalNode ASC(int i) {
20138 			return getToken(SQLServerStatementParser.ASC, i);
20139 		}
20140 		public List<TerminalNode> DESC() { return getTokens(SQLServerStatementParser.DESC); }
20141 		public TerminalNode DESC(int i) {
20142 			return getToken(SQLServerStatementParser.DESC, i);
20143 		}
20144 		public DataWareHouseTableOptionContext(ParserRuleContext parent, int invokingState) {
20145 			super(parent, invokingState);
20146 		}
20147 		@Override public int getRuleIndex() { return RULE_dataWareHouseTableOption; }
20148 		@Override
20149 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20150 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataWareHouseTableOption(this);
20151 			else return visitor.visitChildren(this);
20152 		}
20153 	}
20154 
20155 	public final DataWareHouseTableOptionContext dataWareHouseTableOption() throws RecognitionException {
20156 		DataWareHouseTableOptionContext _localctx = new DataWareHouseTableOptionContext(_ctx, getState());
20157 		enterRule(_localctx, 424, RULE_dataWareHouseTableOption);
20158 		int _la;
20159 		try {
20160 			setState(2996);
20161 			_errHandler.sync(this);
20162 			switch ( getInterpreter().adaptivePredict(_input,258,_ctx) ) {
20163 			case 1:
20164 				enterOuterAlt(_localctx, 1);
20165 				{
20166 				setState(2968);
20167 				match(CLUSTERED);
20168 				setState(2969);
20169 				match(COLUMNSTORE);
20170 				setState(2970);
20171 				match(INDEX);
20172 				}
20173 				break;
20174 			case 2:
20175 				enterOuterAlt(_localctx, 2);
20176 				{
20177 				setState(2971);
20178 				match(CLUSTERED);
20179 				setState(2972);
20180 				match(COLUMNSTORE);
20181 				setState(2973);
20182 				match(INDEX);
20183 				setState(2974);
20184 				match(ORDER);
20185 				setState(2975);
20186 				columnNames();
20187 				}
20188 				break;
20189 			case 3:
20190 				enterOuterAlt(_localctx, 3);
20191 				{
20192 				setState(2976);
20193 				match(HEAP);
20194 				}
20195 				break;
20196 			case 4:
20197 				enterOuterAlt(_localctx, 4);
20198 				{
20199 				setState(2977);
20200 				match(CLUSTERED);
20201 				setState(2978);
20202 				match(INDEX);
20203 				setState(2979);
20204 				match(LP_);
20205 				{
20206 				setState(2980);
20207 				columnName();
20208 				setState(2982);
20209 				_errHandler.sync(this);
20210 				_la = _input.LA(1);
20211 				if (_la==ASC || _la==DESC) {
20212 					{
20213 					setState(2981);
20214 					_la = _input.LA(1);
20215 					if ( !(_la==ASC || _la==DESC) ) {
20216 					_errHandler.recoverInline(this);
20217 					}
20218 					else {
20219 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20220 						_errHandler.reportMatch(this);
20221 						consume();
20222 					}
20223 					}
20224 				}
20225 
20226 				}
20227 				setState(2991);
20228 				_errHandler.sync(this);
20229 				_la = _input.LA(1);
20230 				while (_la==COMMA_) {
20231 					{
20232 					{
20233 					setState(2984);
20234 					match(COMMA_);
20235 					{
20236 					setState(2985);
20237 					columnName();
20238 					setState(2987);
20239 					_errHandler.sync(this);
20240 					_la = _input.LA(1);
20241 					if (_la==ASC || _la==DESC) {
20242 						{
20243 						setState(2986);
20244 						_la = _input.LA(1);
20245 						if ( !(_la==ASC || _la==DESC) ) {
20246 						_errHandler.recoverInline(this);
20247 						}
20248 						else {
20249 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20250 							_errHandler.reportMatch(this);
20251 							consume();
20252 						}
20253 						}
20254 					}
20255 
20256 					}
20257 					}
20258 					}
20259 					setState(2993);
20260 					_errHandler.sync(this);
20261 					_la = _input.LA(1);
20262 				}
20263 				setState(2994);
20264 				match(RP_);
20265 				}
20266 				break;
20267 			}
20268 		}
20269 		catch (RecognitionException re) {
20270 			_localctx.exception = re;
20271 			_errHandler.reportError(this, re);
20272 			_errHandler.recover(this, re);
20273 		}
20274 		finally {
20275 			exitRule();
20276 		}
20277 		return _localctx;
20278 	}
20279 
20280 	public static class DataWareHousePartitionOptionContext extends ParserRuleContext {
20281 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
20282 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
20283 		public TerminalNode LP_(int i) {
20284 			return getToken(SQLServerStatementParser.LP_, i);
20285 		}
20286 		public ColumnNameContext columnName() {
20287 			return getRuleContext(ColumnNameContext.class,0);
20288 		}
20289 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
20290 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
20291 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
20292 		public List<SimpleExprContext> simpleExpr() {
20293 			return getRuleContexts(SimpleExprContext.class);
20294 		}
20295 		public SimpleExprContext simpleExpr(int i) {
20296 			return getRuleContext(SimpleExprContext.class,i);
20297 		}
20298 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
20299 		public TerminalNode RP_(int i) {
20300 			return getToken(SQLServerStatementParser.RP_, i);
20301 		}
20302 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20303 		public TerminalNode COMMA_(int i) {
20304 			return getToken(SQLServerStatementParser.COMMA_, i);
20305 		}
20306 		public TerminalNode LEFT() { return getToken(SQLServerStatementParser.LEFT, 0); }
20307 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
20308 		public DataWareHousePartitionOptionContext(ParserRuleContext parent, int invokingState) {
20309 			super(parent, invokingState);
20310 		}
20311 		@Override public int getRuleIndex() { return RULE_dataWareHousePartitionOption; }
20312 		@Override
20313 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20314 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataWareHousePartitionOption(this);
20315 			else return visitor.visitChildren(this);
20316 		}
20317 	}
20318 
20319 	public final DataWareHousePartitionOptionContext dataWareHousePartitionOption() throws RecognitionException {
20320 		DataWareHousePartitionOptionContext _localctx = new DataWareHousePartitionOptionContext(_ctx, getState());
20321 		enterRule(_localctx, 426, RULE_dataWareHousePartitionOption);
20322 		int _la;
20323 		try {
20324 			enterOuterAlt(_localctx, 1);
20325 			{
20326 			{
20327 			setState(2998);
20328 			match(PARTITION);
20329 			setState(2999);
20330 			match(LP_);
20331 			setState(3000);
20332 			columnName();
20333 			setState(3001);
20334 			match(RANGE);
20335 			setState(3003);
20336 			_errHandler.sync(this);
20337 			_la = _input.LA(1);
20338 			if (_la==LEFT || _la==RIGHT) {
20339 				{
20340 				setState(3002);
20341 				_la = _input.LA(1);
20342 				if ( !(_la==LEFT || _la==RIGHT) ) {
20343 				_errHandler.recoverInline(this);
20344 				}
20345 				else {
20346 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20347 					_errHandler.reportMatch(this);
20348 					consume();
20349 				}
20350 				}
20351 			}
20352 
20353 			setState(3005);
20354 			match(FOR);
20355 			setState(3006);
20356 			match(VALUES);
20357 			setState(3007);
20358 			match(LP_);
20359 			setState(3008);
20360 			simpleExpr(0);
20361 			setState(3013);
20362 			_errHandler.sync(this);
20363 			_la = _input.LA(1);
20364 			while (_la==COMMA_) {
20365 				{
20366 				{
20367 				setState(3009);
20368 				match(COMMA_);
20369 				setState(3010);
20370 				simpleExpr(0);
20371 				}
20372 				}
20373 				setState(3015);
20374 				_errHandler.sync(this);
20375 				_la = _input.LA(1);
20376 			}
20377 			setState(3016);
20378 			match(RP_);
20379 			setState(3017);
20380 			match(RP_);
20381 			}
20382 			}
20383 		}
20384 		catch (RecognitionException re) {
20385 			_localctx.exception = re;
20386 			_errHandler.reportError(this, re);
20387 			_errHandler.recover(this, re);
20388 		}
20389 		finally {
20390 			exitRule();
20391 		}
20392 		return _localctx;
20393 	}
20394 
20395 	public static class CreateIndexSpecificationContext extends ParserRuleContext {
20396 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
20397 		public ClusterOptionContext clusterOption() {
20398 			return getRuleContext(ClusterOptionContext.class,0);
20399 		}
20400 		public CreateIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
20401 			super(parent, invokingState);
20402 		}
20403 		@Override public int getRuleIndex() { return RULE_createIndexSpecification; }
20404 		@Override
20405 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20406 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndexSpecification(this);
20407 			else return visitor.visitChildren(this);
20408 		}
20409 	}
20410 
20411 	public final CreateIndexSpecificationContext createIndexSpecification() throws RecognitionException {
20412 		CreateIndexSpecificationContext _localctx = new CreateIndexSpecificationContext(_ctx, getState());
20413 		enterRule(_localctx, 428, RULE_createIndexSpecification);
20414 		int _la;
20415 		try {
20416 			enterOuterAlt(_localctx, 1);
20417 			{
20418 			setState(3020);
20419 			_errHandler.sync(this);
20420 			_la = _input.LA(1);
20421 			if (_la==UNIQUE) {
20422 				{
20423 				setState(3019);
20424 				match(UNIQUE);
20425 				}
20426 			}
20427 
20428 			setState(3023);
20429 			_errHandler.sync(this);
20430 			_la = _input.LA(1);
20431 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
20432 				{
20433 				setState(3022);
20434 				clusterOption();
20435 				}
20436 			}
20437 
20438 			}
20439 		}
20440 		catch (RecognitionException re) {
20441 			_localctx.exception = re;
20442 			_errHandler.reportError(this, re);
20443 			_errHandler.recover(this, re);
20444 		}
20445 		finally {
20446 			exitRule();
20447 		}
20448 		return _localctx;
20449 	}
20450 
20451 	public static class AlterDefinitionClauseContext extends ParserRuleContext {
20452 		public AddColumnSpecificationContext addColumnSpecification() {
20453 			return getRuleContext(AddColumnSpecificationContext.class,0);
20454 		}
20455 		public ModifyColumnSpecificationContext modifyColumnSpecification() {
20456 			return getRuleContext(ModifyColumnSpecificationContext.class,0);
20457 		}
20458 		public AlterDropContext alterDrop() {
20459 			return getRuleContext(AlterDropContext.class,0);
20460 		}
20461 		public AlterCheckConstraintContext alterCheckConstraint() {
20462 			return getRuleContext(AlterCheckConstraintContext.class,0);
20463 		}
20464 		public AlterTableTriggerContext alterTableTrigger() {
20465 			return getRuleContext(AlterTableTriggerContext.class,0);
20466 		}
20467 		public AlterSwitchContext alterSwitch() {
20468 			return getRuleContext(AlterSwitchContext.class,0);
20469 		}
20470 		public AlterSetContext alterSet() {
20471 			return getRuleContext(AlterSetContext.class,0);
20472 		}
20473 		public AlterTableOptionContext alterTableOption() {
20474 			return getRuleContext(AlterTableOptionContext.class,0);
20475 		}
20476 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
20477 		public AlterDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
20478 			super(parent, invokingState);
20479 		}
20480 		@Override public int getRuleIndex() { return RULE_alterDefinitionClause; }
20481 		@Override
20482 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20483 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDefinitionClause(this);
20484 			else return visitor.visitChildren(this);
20485 		}
20486 	}
20487 
20488 	public final AlterDefinitionClauseContext alterDefinitionClause() throws RecognitionException {
20489 		AlterDefinitionClauseContext _localctx = new AlterDefinitionClauseContext(_ctx, getState());
20490 		enterRule(_localctx, 430, RULE_alterDefinitionClause);
20491 		try {
20492 			setState(3034);
20493 			_errHandler.sync(this);
20494 			switch ( getInterpreter().adaptivePredict(_input,263,_ctx) ) {
20495 			case 1:
20496 				enterOuterAlt(_localctx, 1);
20497 				{
20498 				setState(3025);
20499 				addColumnSpecification();
20500 				}
20501 				break;
20502 			case 2:
20503 				enterOuterAlt(_localctx, 2);
20504 				{
20505 				setState(3026);
20506 				modifyColumnSpecification();
20507 				}
20508 				break;
20509 			case 3:
20510 				enterOuterAlt(_localctx, 3);
20511 				{
20512 				setState(3027);
20513 				alterDrop();
20514 				}
20515 				break;
20516 			case 4:
20517 				enterOuterAlt(_localctx, 4);
20518 				{
20519 				setState(3028);
20520 				alterCheckConstraint();
20521 				}
20522 				break;
20523 			case 5:
20524 				enterOuterAlt(_localctx, 5);
20525 				{
20526 				setState(3029);
20527 				alterTableTrigger();
20528 				}
20529 				break;
20530 			case 6:
20531 				enterOuterAlt(_localctx, 6);
20532 				{
20533 				setState(3030);
20534 				alterSwitch();
20535 				}
20536 				break;
20537 			case 7:
20538 				enterOuterAlt(_localctx, 7);
20539 				{
20540 				setState(3031);
20541 				alterSet();
20542 				}
20543 				break;
20544 			case 8:
20545 				enterOuterAlt(_localctx, 8);
20546 				{
20547 				setState(3032);
20548 				alterTableOption();
20549 				}
20550 				break;
20551 			case 9:
20552 				enterOuterAlt(_localctx, 9);
20553 				{
20554 				setState(3033);
20555 				match(REBUILD);
20556 				}
20557 				break;
20558 			}
20559 		}
20560 		catch (RecognitionException re) {
20561 			_localctx.exception = re;
20562 			_errHandler.reportError(this, re);
20563 			_errHandler.recover(this, re);
20564 		}
20565 		finally {
20566 			exitRule();
20567 		}
20568 		return _localctx;
20569 	}
20570 
20571 	public static class AddColumnSpecificationContext extends ParserRuleContext {
20572 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
20573 		public AlterColumnAddOptionsContext alterColumnAddOptions() {
20574 			return getRuleContext(AlterColumnAddOptionsContext.class,0);
20575 		}
20576 		public GeneratedColumnNamesClauseContext generatedColumnNamesClause() {
20577 			return getRuleContext(GeneratedColumnNamesClauseContext.class,0);
20578 		}
20579 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
20580 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
20581 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
20582 		public AddColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
20583 			super(parent, invokingState);
20584 		}
20585 		@Override public int getRuleIndex() { return RULE_addColumnSpecification; }
20586 		@Override
20587 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20588 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddColumnSpecification(this);
20589 			else return visitor.visitChildren(this);
20590 		}
20591 	}
20592 
20593 	public final AddColumnSpecificationContext addColumnSpecification() throws RecognitionException {
20594 		AddColumnSpecificationContext _localctx = new AddColumnSpecificationContext(_ctx, getState());
20595 		enterRule(_localctx, 432, RULE_addColumnSpecification);
20596 		int _la;
20597 		try {
20598 			enterOuterAlt(_localctx, 1);
20599 			{
20600 			setState(3038);
20601 			_errHandler.sync(this);
20602 			_la = _input.LA(1);
20603 			if (_la==WITH) {
20604 				{
20605 				setState(3036);
20606 				match(WITH);
20607 				setState(3037);
20608 				_la = _input.LA(1);
20609 				if ( !(_la==CHECK || _la==NOCHECK) ) {
20610 				_errHandler.recoverInline(this);
20611 				}
20612 				else {
20613 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20614 					_errHandler.reportMatch(this);
20615 					consume();
20616 				}
20617 				}
20618 			}
20619 
20620 			setState(3040);
20621 			match(ADD);
20622 			setState(3043);
20623 			_errHandler.sync(this);
20624 			switch ( getInterpreter().adaptivePredict(_input,265,_ctx) ) {
20625 			case 1:
20626 				{
20627 				setState(3041);
20628 				alterColumnAddOptions();
20629 				}
20630 				break;
20631 			case 2:
20632 				{
20633 				setState(3042);
20634 				generatedColumnNamesClause();
20635 				}
20636 				break;
20637 			}
20638 			}
20639 		}
20640 		catch (RecognitionException re) {
20641 			_localctx.exception = re;
20642 			_errHandler.reportError(this, re);
20643 			_errHandler.recover(this, re);
20644 		}
20645 		finally {
20646 			exitRule();
20647 		}
20648 		return _localctx;
20649 	}
20650 
20651 	public static class ModifyColumnSpecificationContext extends ParserRuleContext {
20652 		public AlterColumnOperationContext alterColumnOperation() {
20653 			return getRuleContext(AlterColumnOperationContext.class,0);
20654 		}
20655 		public DataTypeContext dataType() {
20656 			return getRuleContext(DataTypeContext.class,0);
20657 		}
20658 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
20659 		public CollationNameContext collationName() {
20660 			return getRuleContext(CollationNameContext.class,0);
20661 		}
20662 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
20663 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
20664 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
20665 		public ModifyColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
20666 			super(parent, invokingState);
20667 		}
20668 		@Override public int getRuleIndex() { return RULE_modifyColumnSpecification; }
20669 		@Override
20670 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20671 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitModifyColumnSpecification(this);
20672 			else return visitor.visitChildren(this);
20673 		}
20674 	}
20675 
20676 	public final ModifyColumnSpecificationContext modifyColumnSpecification() throws RecognitionException {
20677 		ModifyColumnSpecificationContext _localctx = new ModifyColumnSpecificationContext(_ctx, getState());
20678 		enterRule(_localctx, 434, RULE_modifyColumnSpecification);
20679 		int _la;
20680 		try {
20681 			enterOuterAlt(_localctx, 1);
20682 			{
20683 			setState(3045);
20684 			alterColumnOperation();
20685 			setState(3046);
20686 			dataType();
20687 			setState(3049);
20688 			_errHandler.sync(this);
20689 			_la = _input.LA(1);
20690 			if (_la==COLLATE) {
20691 				{
20692 				setState(3047);
20693 				match(COLLATE);
20694 				setState(3048);
20695 				collationName();
20696 				}
20697 			}
20698 
20699 			setState(3054);
20700 			_errHandler.sync(this);
20701 			switch (_input.LA(1)) {
20702 			case NULL:
20703 				{
20704 				setState(3051);
20705 				match(NULL);
20706 				}
20707 				break;
20708 			case NOT:
20709 				{
20710 				setState(3052);
20711 				match(NOT);
20712 				setState(3053);
20713 				match(NULL);
20714 				}
20715 				break;
20716 			case EOF:
20717 			case COMMA_:
20718 			case SEMI_:
20719 			case SELECT:
20720 			case INSERT:
20721 			case UPDATE:
20722 			case DELETE:
20723 			case CREATE:
20724 			case ALTER:
20725 			case DROP:
20726 			case TRUNCATE:
20727 			case SET:
20728 			case WITH:
20729 			case DECLARE:
20730 			case RETURN:
20731 			case END:
20732 			case SPARSE:
20733 				break;
20734 			default:
20735 				break;
20736 			}
20737 			setState(3057);
20738 			_errHandler.sync(this);
20739 			_la = _input.LA(1);
20740 			if (_la==SPARSE) {
20741 				{
20742 				setState(3056);
20743 				match(SPARSE);
20744 				}
20745 			}
20746 
20747 			}
20748 		}
20749 		catch (RecognitionException re) {
20750 			_localctx.exception = re;
20751 			_errHandler.reportError(this, re);
20752 			_errHandler.recover(this, re);
20753 		}
20754 		finally {
20755 			exitRule();
20756 		}
20757 		return _localctx;
20758 	}
20759 
20760 	public static class AlterColumnOperationContext extends ParserRuleContext {
20761 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
20762 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
20763 		public ColumnNameContext columnName() {
20764 			return getRuleContext(ColumnNameContext.class,0);
20765 		}
20766 		public AlterColumnOperationContext(ParserRuleContext parent, int invokingState) {
20767 			super(parent, invokingState);
20768 		}
20769 		@Override public int getRuleIndex() { return RULE_alterColumnOperation; }
20770 		@Override
20771 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20772 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnOperation(this);
20773 			else return visitor.visitChildren(this);
20774 		}
20775 	}
20776 
20777 	public final AlterColumnOperationContext alterColumnOperation() throws RecognitionException {
20778 		AlterColumnOperationContext _localctx = new AlterColumnOperationContext(_ctx, getState());
20779 		enterRule(_localctx, 436, RULE_alterColumnOperation);
20780 		try {
20781 			enterOuterAlt(_localctx, 1);
20782 			{
20783 			setState(3059);
20784 			match(ALTER);
20785 			setState(3060);
20786 			match(COLUMN);
20787 			setState(3061);
20788 			columnName();
20789 			}
20790 		}
20791 		catch (RecognitionException re) {
20792 			_localctx.exception = re;
20793 			_errHandler.reportError(this, re);
20794 			_errHandler.recover(this, re);
20795 		}
20796 		finally {
20797 			exitRule();
20798 		}
20799 		return _localctx;
20800 	}
20801 
20802 	public static class AlterColumnAddOptionsContext extends ParserRuleContext {
20803 		public List<AlterColumnAddOptionContext> alterColumnAddOption() {
20804 			return getRuleContexts(AlterColumnAddOptionContext.class);
20805 		}
20806 		public AlterColumnAddOptionContext alterColumnAddOption(int i) {
20807 			return getRuleContext(AlterColumnAddOptionContext.class,i);
20808 		}
20809 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20810 		public TerminalNode COMMA_(int i) {
20811 			return getToken(SQLServerStatementParser.COMMA_, i);
20812 		}
20813 		public AlterColumnAddOptionsContext(ParserRuleContext parent, int invokingState) {
20814 			super(parent, invokingState);
20815 		}
20816 		@Override public int getRuleIndex() { return RULE_alterColumnAddOptions; }
20817 		@Override
20818 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20819 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnAddOptions(this);
20820 			else return visitor.visitChildren(this);
20821 		}
20822 	}
20823 
20824 	public final AlterColumnAddOptionsContext alterColumnAddOptions() throws RecognitionException {
20825 		AlterColumnAddOptionsContext _localctx = new AlterColumnAddOptionsContext(_ctx, getState());
20826 		enterRule(_localctx, 438, RULE_alterColumnAddOptions);
20827 		try {
20828 			int _alt;
20829 			enterOuterAlt(_localctx, 1);
20830 			{
20831 			setState(3063);
20832 			alterColumnAddOption();
20833 			setState(3068);
20834 			_errHandler.sync(this);
20835 			_alt = getInterpreter().adaptivePredict(_input,269,_ctx);
20836 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
20837 				if ( _alt==1 ) {
20838 					{
20839 					{
20840 					setState(3064);
20841 					match(COMMA_);
20842 					setState(3065);
20843 					alterColumnAddOption();
20844 					}
20845 					} 
20846 				}
20847 				setState(3070);
20848 				_errHandler.sync(this);
20849 				_alt = getInterpreter().adaptivePredict(_input,269,_ctx);
20850 			}
20851 			}
20852 		}
20853 		catch (RecognitionException re) {
20854 			_localctx.exception = re;
20855 			_errHandler.reportError(this, re);
20856 			_errHandler.recover(this, re);
20857 		}
20858 		finally {
20859 			exitRule();
20860 		}
20861 		return _localctx;
20862 	}
20863 
20864 	public static class AlterColumnAddOptionContext extends ParserRuleContext {
20865 		public ColumnDefinitionContext columnDefinition() {
20866 			return getRuleContext(ColumnDefinitionContext.class,0);
20867 		}
20868 		public ComputedColumnDefinitionContext computedColumnDefinition() {
20869 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
20870 		}
20871 		public ColumnSetDefinitionContext columnSetDefinition() {
20872 			return getRuleContext(ColumnSetDefinitionContext.class,0);
20873 		}
20874 		public TableConstraintContext tableConstraint() {
20875 			return getRuleContext(TableConstraintContext.class,0);
20876 		}
20877 		public AlterTableTableIndexContext alterTableTableIndex() {
20878 			return getRuleContext(AlterTableTableIndexContext.class,0);
20879 		}
20880 		public ConstraintForColumnContext constraintForColumn() {
20881 			return getRuleContext(ConstraintForColumnContext.class,0);
20882 		}
20883 		public AlterColumnAddOptionContext(ParserRuleContext parent, int invokingState) {
20884 			super(parent, invokingState);
20885 		}
20886 		@Override public int getRuleIndex() { return RULE_alterColumnAddOption; }
20887 		@Override
20888 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20889 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnAddOption(this);
20890 			else return visitor.visitChildren(this);
20891 		}
20892 	}
20893 
20894 	public final AlterColumnAddOptionContext alterColumnAddOption() throws RecognitionException {
20895 		AlterColumnAddOptionContext _localctx = new AlterColumnAddOptionContext(_ctx, getState());
20896 		enterRule(_localctx, 440, RULE_alterColumnAddOption);
20897 		try {
20898 			setState(3077);
20899 			_errHandler.sync(this);
20900 			switch ( getInterpreter().adaptivePredict(_input,270,_ctx) ) {
20901 			case 1:
20902 				enterOuterAlt(_localctx, 1);
20903 				{
20904 				setState(3071);
20905 				columnDefinition();
20906 				}
20907 				break;
20908 			case 2:
20909 				enterOuterAlt(_localctx, 2);
20910 				{
20911 				setState(3072);
20912 				computedColumnDefinition();
20913 				}
20914 				break;
20915 			case 3:
20916 				enterOuterAlt(_localctx, 3);
20917 				{
20918 				setState(3073);
20919 				columnSetDefinition();
20920 				}
20921 				break;
20922 			case 4:
20923 				enterOuterAlt(_localctx, 4);
20924 				{
20925 				setState(3074);
20926 				tableConstraint();
20927 				}
20928 				break;
20929 			case 5:
20930 				enterOuterAlt(_localctx, 5);
20931 				{
20932 				setState(3075);
20933 				alterTableTableIndex();
20934 				}
20935 				break;
20936 			case 6:
20937 				enterOuterAlt(_localctx, 6);
20938 				{
20939 				setState(3076);
20940 				constraintForColumn();
20941 				}
20942 				break;
20943 			}
20944 		}
20945 		catch (RecognitionException re) {
20946 			_localctx.exception = re;
20947 			_errHandler.reportError(this, re);
20948 			_errHandler.recover(this, re);
20949 		}
20950 		finally {
20951 			exitRule();
20952 		}
20953 		return _localctx;
20954 	}
20955 
20956 	public static class ConstraintForColumnContext extends ParserRuleContext {
20957 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
20958 		public SimpleExprContext simpleExpr() {
20959 			return getRuleContext(SimpleExprContext.class,0);
20960 		}
20961 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
20962 		public ColumnNameContext columnName() {
20963 			return getRuleContext(ColumnNameContext.class,0);
20964 		}
20965 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
20966 		public ConstraintNameContext constraintName() {
20967 			return getRuleContext(ConstraintNameContext.class,0);
20968 		}
20969 		public ConstraintForColumnContext(ParserRuleContext parent, int invokingState) {
20970 			super(parent, invokingState);
20971 		}
20972 		@Override public int getRuleIndex() { return RULE_constraintForColumn; }
20973 		@Override
20974 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20975 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConstraintForColumn(this);
20976 			else return visitor.visitChildren(this);
20977 		}
20978 	}
20979 
20980 	public final ConstraintForColumnContext constraintForColumn() throws RecognitionException {
20981 		ConstraintForColumnContext _localctx = new ConstraintForColumnContext(_ctx, getState());
20982 		enterRule(_localctx, 442, RULE_constraintForColumn);
20983 		int _la;
20984 		try {
20985 			enterOuterAlt(_localctx, 1);
20986 			{
20987 			setState(3081);
20988 			_errHandler.sync(this);
20989 			_la = _input.LA(1);
20990 			if (_la==CONSTRAINT) {
20991 				{
20992 				setState(3079);
20993 				match(CONSTRAINT);
20994 				setState(3080);
20995 				constraintName();
20996 				}
20997 			}
20998 
20999 			setState(3083);
21000 			match(DEFAULT);
21001 			setState(3084);
21002 			simpleExpr(0);
21003 			setState(3085);
21004 			match(FOR);
21005 			setState(3086);
21006 			columnName();
21007 			}
21008 		}
21009 		catch (RecognitionException re) {
21010 			_localctx.exception = re;
21011 			_errHandler.reportError(this, re);
21012 			_errHandler.recover(this, re);
21013 		}
21014 		finally {
21015 			exitRule();
21016 		}
21017 		return _localctx;
21018 	}
21019 
21020 	public static class GeneratedColumnNamesClauseContext extends ParserRuleContext {
21021 		public GeneratedColumnNameClauseContext generatedColumnNameClause() {
21022 			return getRuleContext(GeneratedColumnNameClauseContext.class,0);
21023 		}
21024 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
21025 		public PeriodClauseContext periodClause() {
21026 			return getRuleContext(PeriodClauseContext.class,0);
21027 		}
21028 		public GeneratedColumnNamesClauseContext(ParserRuleContext parent, int invokingState) {
21029 			super(parent, invokingState);
21030 		}
21031 		@Override public int getRuleIndex() { return RULE_generatedColumnNamesClause; }
21032 		@Override
21033 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21034 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnNamesClause(this);
21035 			else return visitor.visitChildren(this);
21036 		}
21037 	}
21038 
21039 	public final GeneratedColumnNamesClauseContext generatedColumnNamesClause() throws RecognitionException {
21040 		GeneratedColumnNamesClauseContext _localctx = new GeneratedColumnNamesClauseContext(_ctx, getState());
21041 		enterRule(_localctx, 444, RULE_generatedColumnNamesClause);
21042 		try {
21043 			setState(3096);
21044 			_errHandler.sync(this);
21045 			switch ( getInterpreter().adaptivePredict(_input,272,_ctx) ) {
21046 			case 1:
21047 				enterOuterAlt(_localctx, 1);
21048 				{
21049 				setState(3088);
21050 				generatedColumnNameClause();
21051 				setState(3089);
21052 				match(COMMA_);
21053 				setState(3090);
21054 				periodClause();
21055 				}
21056 				break;
21057 			case 2:
21058 				enterOuterAlt(_localctx, 2);
21059 				{
21060 				setState(3092);
21061 				periodClause();
21062 				setState(3093);
21063 				match(COMMA_);
21064 				setState(3094);
21065 				generatedColumnNameClause();
21066 				}
21067 				break;
21068 			}
21069 		}
21070 		catch (RecognitionException re) {
21071 			_localctx.exception = re;
21072 			_errHandler.reportError(this, re);
21073 			_errHandler.recover(this, re);
21074 		}
21075 		finally {
21076 			exitRule();
21077 		}
21078 		return _localctx;
21079 	}
21080 
21081 	public static class GeneratedColumnNameClauseContext extends ParserRuleContext {
21082 		public List<GeneratedColumnNameContext> generatedColumnName() {
21083 			return getRuleContexts(GeneratedColumnNameContext.class);
21084 		}
21085 		public GeneratedColumnNameContext generatedColumnName(int i) {
21086 			return getRuleContext(GeneratedColumnNameContext.class,i);
21087 		}
21088 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
21089 		public SimpleExprContext simpleExpr() {
21090 			return getRuleContext(SimpleExprContext.class,0);
21091 		}
21092 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
21093 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
21094 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
21095 		public GeneratedColumnNameClauseContext(ParserRuleContext parent, int invokingState) {
21096 			super(parent, invokingState);
21097 		}
21098 		@Override public int getRuleIndex() { return RULE_generatedColumnNameClause; }
21099 		@Override
21100 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21101 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnNameClause(this);
21102 			else return visitor.visitChildren(this);
21103 		}
21104 	}
21105 
21106 	public final GeneratedColumnNameClauseContext generatedColumnNameClause() throws RecognitionException {
21107 		GeneratedColumnNameClauseContext _localctx = new GeneratedColumnNameClauseContext(_ctx, getState());
21108 		enterRule(_localctx, 446, RULE_generatedColumnNameClause);
21109 		int _la;
21110 		try {
21111 			enterOuterAlt(_localctx, 1);
21112 			{
21113 			setState(3098);
21114 			generatedColumnName();
21115 			setState(3099);
21116 			match(DEFAULT);
21117 			setState(3100);
21118 			simpleExpr(0);
21119 			setState(3103);
21120 			_errHandler.sync(this);
21121 			_la = _input.LA(1);
21122 			if (_la==WITH) {
21123 				{
21124 				setState(3101);
21125 				match(WITH);
21126 				setState(3102);
21127 				match(VALUES);
21128 				}
21129 			}
21130 
21131 			setState(3105);
21132 			match(COMMA_);
21133 			setState(3106);
21134 			generatedColumnName();
21135 			}
21136 		}
21137 		catch (RecognitionException re) {
21138 			_localctx.exception = re;
21139 			_errHandler.reportError(this, re);
21140 			_errHandler.recover(this, re);
21141 		}
21142 		finally {
21143 			exitRule();
21144 		}
21145 		return _localctx;
21146 	}
21147 
21148 	public static class GeneratedColumnNameContext extends ParserRuleContext {
21149 		public ColumnNameContext columnName() {
21150 			return getRuleContext(ColumnNameContext.class,0);
21151 		}
21152 		public DataTypeNameContext dataTypeName() {
21153 			return getRuleContext(DataTypeNameContext.class,0);
21154 		}
21155 		public TerminalNode GENERATED() { return getToken(SQLServerStatementParser.GENERATED, 0); }
21156 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
21157 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
21158 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
21159 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
21160 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
21161 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
21162 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
21163 		public IgnoredIdentifierContext ignoredIdentifier() {
21164 			return getRuleContext(IgnoredIdentifierContext.class,0);
21165 		}
21166 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
21167 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
21168 		public GeneratedColumnNameContext(ParserRuleContext parent, int invokingState) {
21169 			super(parent, invokingState);
21170 		}
21171 		@Override public int getRuleIndex() { return RULE_generatedColumnName; }
21172 		@Override
21173 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21174 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnName(this);
21175 			else return visitor.visitChildren(this);
21176 		}
21177 	}
21178 
21179 	public final GeneratedColumnNameContext generatedColumnName() throws RecognitionException {
21180 		GeneratedColumnNameContext _localctx = new GeneratedColumnNameContext(_ctx, getState());
21181 		enterRule(_localctx, 448, RULE_generatedColumnName);
21182 		int _la;
21183 		try {
21184 			enterOuterAlt(_localctx, 1);
21185 			{
21186 			setState(3108);
21187 			columnName();
21188 			setState(3109);
21189 			dataTypeName();
21190 			setState(3110);
21191 			match(GENERATED);
21192 			setState(3111);
21193 			match(ALWAYS);
21194 			setState(3112);
21195 			match(AS);
21196 			setState(3113);
21197 			match(ROW);
21198 			setState(3115);
21199 			_errHandler.sync(this);
21200 			switch ( getInterpreter().adaptivePredict(_input,274,_ctx) ) {
21201 			case 1:
21202 				{
21203 				setState(3114);
21204 				_la = _input.LA(1);
21205 				if ( !(_la==START || _la==END) ) {
21206 				_errHandler.recoverInline(this);
21207 				}
21208 				else {
21209 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21210 					_errHandler.reportMatch(this);
21211 					consume();
21212 				}
21213 				}
21214 				break;
21215 			}
21216 			setState(3118);
21217 			_errHandler.sync(this);
21218 			_la = _input.LA(1);
21219 			if (_la==HIDDEN_) {
21220 				{
21221 				setState(3117);
21222 				match(HIDDEN_);
21223 				}
21224 			}
21225 
21226 			setState(3122);
21227 			_errHandler.sync(this);
21228 			_la = _input.LA(1);
21229 			if (_la==NOT) {
21230 				{
21231 				setState(3120);
21232 				match(NOT);
21233 				setState(3121);
21234 				match(NULL);
21235 				}
21236 			}
21237 
21238 			setState(3126);
21239 			_errHandler.sync(this);
21240 			_la = _input.LA(1);
21241 			if (_la==CONSTRAINT) {
21242 				{
21243 				setState(3124);
21244 				match(CONSTRAINT);
21245 				setState(3125);
21246 				ignoredIdentifier();
21247 				}
21248 			}
21249 
21250 			}
21251 		}
21252 		catch (RecognitionException re) {
21253 			_localctx.exception = re;
21254 			_errHandler.reportError(this, re);
21255 			_errHandler.recover(this, re);
21256 		}
21257 		finally {
21258 			exitRule();
21259 		}
21260 		return _localctx;
21261 	}
21262 
21263 	public static class AlterDropContext extends ParserRuleContext {
21264 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
21265 		public AlterTableDropConstraintContext alterTableDropConstraint() {
21266 			return getRuleContext(AlterTableDropConstraintContext.class,0);
21267 		}
21268 		public DropColumnSpecificationContext dropColumnSpecification() {
21269 			return getRuleContext(DropColumnSpecificationContext.class,0);
21270 		}
21271 		public DropIndexSpecificationContext dropIndexSpecification() {
21272 			return getRuleContext(DropIndexSpecificationContext.class,0);
21273 		}
21274 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
21275 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
21276 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
21277 		public AlterDropContext(ParserRuleContext parent, int invokingState) {
21278 			super(parent, invokingState);
21279 		}
21280 		@Override public int getRuleIndex() { return RULE_alterDrop; }
21281 		@Override
21282 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21283 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDrop(this);
21284 			else return visitor.visitChildren(this);
21285 		}
21286 	}
21287 
21288 	public final AlterDropContext alterDrop() throws RecognitionException {
21289 		AlterDropContext _localctx = new AlterDropContext(_ctx, getState());
21290 		enterRule(_localctx, 450, RULE_alterDrop);
21291 		try {
21292 			enterOuterAlt(_localctx, 1);
21293 			{
21294 			setState(3128);
21295 			match(DROP);
21296 			setState(3135);
21297 			_errHandler.sync(this);
21298 			switch ( getInterpreter().adaptivePredict(_input,278,_ctx) ) {
21299 			case 1:
21300 				{
21301 				setState(3129);
21302 				alterTableDropConstraint();
21303 				}
21304 				break;
21305 			case 2:
21306 				{
21307 				setState(3130);
21308 				dropColumnSpecification();
21309 				}
21310 				break;
21311 			case 3:
21312 				{
21313 				setState(3131);
21314 				dropIndexSpecification();
21315 				}
21316 				break;
21317 			case 4:
21318 				{
21319 				setState(3132);
21320 				match(PERIOD);
21321 				setState(3133);
21322 				match(FOR);
21323 				setState(3134);
21324 				match(SYSTEM_TIME);
21325 				}
21326 				break;
21327 			}
21328 			}
21329 		}
21330 		catch (RecognitionException re) {
21331 			_localctx.exception = re;
21332 			_errHandler.reportError(this, re);
21333 			_errHandler.recover(this, re);
21334 		}
21335 		finally {
21336 			exitRule();
21337 		}
21338 		return _localctx;
21339 	}
21340 
21341 	public static class AlterTableDropConstraintContext extends ParserRuleContext {
21342 		public List<DropConstraintNameContext> dropConstraintName() {
21343 			return getRuleContexts(DropConstraintNameContext.class);
21344 		}
21345 		public DropConstraintNameContext dropConstraintName(int i) {
21346 			return getRuleContext(DropConstraintNameContext.class,i);
21347 		}
21348 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
21349 		public IfExistsContext ifExists() {
21350 			return getRuleContext(IfExistsContext.class,0);
21351 		}
21352 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21353 		public TerminalNode COMMA_(int i) {
21354 			return getToken(SQLServerStatementParser.COMMA_, i);
21355 		}
21356 		public AlterTableDropConstraintContext(ParserRuleContext parent, int invokingState) {
21357 			super(parent, invokingState);
21358 		}
21359 		@Override public int getRuleIndex() { return RULE_alterTableDropConstraint; }
21360 		@Override
21361 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21362 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableDropConstraint(this);
21363 			else return visitor.visitChildren(this);
21364 		}
21365 	}
21366 
21367 	public final AlterTableDropConstraintContext alterTableDropConstraint() throws RecognitionException {
21368 		AlterTableDropConstraintContext _localctx = new AlterTableDropConstraintContext(_ctx, getState());
21369 		enterRule(_localctx, 452, RULE_alterTableDropConstraint);
21370 		int _la;
21371 		try {
21372 			int _alt;
21373 			enterOuterAlt(_localctx, 1);
21374 			{
21375 			setState(3138);
21376 			_errHandler.sync(this);
21377 			_la = _input.LA(1);
21378 			if (_la==CONSTRAINT) {
21379 				{
21380 				setState(3137);
21381 				match(CONSTRAINT);
21382 				}
21383 			}
21384 
21385 			setState(3141);
21386 			_errHandler.sync(this);
21387 			_la = _input.LA(1);
21388 			if (_la==IF) {
21389 				{
21390 				setState(3140);
21391 				ifExists();
21392 				}
21393 			}
21394 
21395 			setState(3143);
21396 			dropConstraintName();
21397 			setState(3148);
21398 			_errHandler.sync(this);
21399 			_alt = getInterpreter().adaptivePredict(_input,281,_ctx);
21400 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
21401 				if ( _alt==1 ) {
21402 					{
21403 					{
21404 					setState(3144);
21405 					match(COMMA_);
21406 					setState(3145);
21407 					dropConstraintName();
21408 					}
21409 					} 
21410 				}
21411 				setState(3150);
21412 				_errHandler.sync(this);
21413 				_alt = getInterpreter().adaptivePredict(_input,281,_ctx);
21414 			}
21415 			}
21416 		}
21417 		catch (RecognitionException re) {
21418 			_localctx.exception = re;
21419 			_errHandler.reportError(this, re);
21420 			_errHandler.recover(this, re);
21421 		}
21422 		finally {
21423 			exitRule();
21424 		}
21425 		return _localctx;
21426 	}
21427 
21428 	public static class DropConstraintNameContext extends ParserRuleContext {
21429 		public ConstraintNameContext constraintName() {
21430 			return getRuleContext(ConstraintNameContext.class,0);
21431 		}
21432 		public DropConstraintWithClauseContext dropConstraintWithClause() {
21433 			return getRuleContext(DropConstraintWithClauseContext.class,0);
21434 		}
21435 		public DropConstraintNameContext(ParserRuleContext parent, int invokingState) {
21436 			super(parent, invokingState);
21437 		}
21438 		@Override public int getRuleIndex() { return RULE_dropConstraintName; }
21439 		@Override
21440 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21441 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintName(this);
21442 			else return visitor.visitChildren(this);
21443 		}
21444 	}
21445 
21446 	public final DropConstraintNameContext dropConstraintName() throws RecognitionException {
21447 		DropConstraintNameContext _localctx = new DropConstraintNameContext(_ctx, getState());
21448 		enterRule(_localctx, 454, RULE_dropConstraintName);
21449 		try {
21450 			enterOuterAlt(_localctx, 1);
21451 			{
21452 			setState(3151);
21453 			constraintName();
21454 			setState(3153);
21455 			_errHandler.sync(this);
21456 			switch ( getInterpreter().adaptivePredict(_input,282,_ctx) ) {
21457 			case 1:
21458 				{
21459 				setState(3152);
21460 				dropConstraintWithClause();
21461 				}
21462 				break;
21463 			}
21464 			}
21465 		}
21466 		catch (RecognitionException re) {
21467 			_localctx.exception = re;
21468 			_errHandler.reportError(this, re);
21469 			_errHandler.recover(this, re);
21470 		}
21471 		finally {
21472 			exitRule();
21473 		}
21474 		return _localctx;
21475 	}
21476 
21477 	public static class DropConstraintWithClauseContext extends ParserRuleContext {
21478 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
21479 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
21480 		public List<DropConstraintOptionContext> dropConstraintOption() {
21481 			return getRuleContexts(DropConstraintOptionContext.class);
21482 		}
21483 		public DropConstraintOptionContext dropConstraintOption(int i) {
21484 			return getRuleContext(DropConstraintOptionContext.class,i);
21485 		}
21486 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
21487 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21488 		public TerminalNode COMMA_(int i) {
21489 			return getToken(SQLServerStatementParser.COMMA_, i);
21490 		}
21491 		public DropConstraintWithClauseContext(ParserRuleContext parent, int invokingState) {
21492 			super(parent, invokingState);
21493 		}
21494 		@Override public int getRuleIndex() { return RULE_dropConstraintWithClause; }
21495 		@Override
21496 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21497 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintWithClause(this);
21498 			else return visitor.visitChildren(this);
21499 		}
21500 	}
21501 
21502 	public final DropConstraintWithClauseContext dropConstraintWithClause() throws RecognitionException {
21503 		DropConstraintWithClauseContext _localctx = new DropConstraintWithClauseContext(_ctx, getState());
21504 		enterRule(_localctx, 456, RULE_dropConstraintWithClause);
21505 		int _la;
21506 		try {
21507 			enterOuterAlt(_localctx, 1);
21508 			{
21509 			setState(3155);
21510 			match(WITH);
21511 			setState(3156);
21512 			match(LP_);
21513 			setState(3157);
21514 			dropConstraintOption();
21515 			setState(3162);
21516 			_errHandler.sync(this);
21517 			_la = _input.LA(1);
21518 			while (_la==COMMA_) {
21519 				{
21520 				{
21521 				setState(3158);
21522 				match(COMMA_);
21523 				setState(3159);
21524 				dropConstraintOption();
21525 				}
21526 				}
21527 				setState(3164);
21528 				_errHandler.sync(this);
21529 				_la = _input.LA(1);
21530 			}
21531 			setState(3165);
21532 			match(RP_);
21533 			}
21534 		}
21535 		catch (RecognitionException re) {
21536 			_localctx.exception = re;
21537 			_errHandler.reportError(this, re);
21538 			_errHandler.recover(this, re);
21539 		}
21540 		finally {
21541 			exitRule();
21542 		}
21543 		return _localctx;
21544 	}
21545 
21546 	public static class DropConstraintOptionContext extends ParserRuleContext {
21547 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
21548 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
21549 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
21550 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
21551 		public OnOffOptionContext onOffOption() {
21552 			return getRuleContext(OnOffOptionContext.class,0);
21553 		}
21554 		public TerminalNode MOVE() { return getToken(SQLServerStatementParser.MOVE, 0); }
21555 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
21556 		public SchemaNameContext schemaName() {
21557 			return getRuleContext(SchemaNameContext.class,0);
21558 		}
21559 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
21560 		public ColumnNameContext columnName() {
21561 			return getRuleContext(ColumnNameContext.class,0);
21562 		}
21563 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
21564 		public IgnoredIdentifierContext ignoredIdentifier() {
21565 			return getRuleContext(IgnoredIdentifierContext.class,0);
21566 		}
21567 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
21568 		public DropConstraintOptionContext(ParserRuleContext parent, int invokingState) {
21569 			super(parent, invokingState);
21570 		}
21571 		@Override public int getRuleIndex() { return RULE_dropConstraintOption; }
21572 		@Override
21573 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21574 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintOption(this);
21575 			else return visitor.visitChildren(this);
21576 		}
21577 	}
21578 
21579 	public final DropConstraintOptionContext dropConstraintOption() throws RecognitionException {
21580 		DropConstraintOptionContext _localctx = new DropConstraintOptionContext(_ctx, getState());
21581 		enterRule(_localctx, 458, RULE_dropConstraintOption);
21582 		try {
21583 			enterOuterAlt(_localctx, 1);
21584 			{
21585 			setState(3184);
21586 			_errHandler.sync(this);
21587 			switch (_input.LA(1)) {
21588 			case MAXDOP:
21589 				{
21590 				setState(3167);
21591 				match(MAXDOP);
21592 				setState(3168);
21593 				match(EQ_);
21594 				setState(3169);
21595 				match(NUMBER_);
21596 				}
21597 				break;
21598 			case ONLINE:
21599 				{
21600 				setState(3170);
21601 				match(ONLINE);
21602 				setState(3171);
21603 				match(EQ_);
21604 				setState(3172);
21605 				onOffOption();
21606 				}
21607 				break;
21608 			case MOVE:
21609 				{
21610 				setState(3173);
21611 				match(MOVE);
21612 				setState(3174);
21613 				match(TO);
21614 				setState(3182);
21615 				_errHandler.sync(this);
21616 				switch ( getInterpreter().adaptivePredict(_input,284,_ctx) ) {
21617 				case 1:
21618 					{
21619 					setState(3175);
21620 					schemaName();
21621 					setState(3176);
21622 					match(LP_);
21623 					setState(3177);
21624 					columnName();
21625 					setState(3178);
21626 					match(RP_);
21627 					}
21628 					break;
21629 				case 2:
21630 					{
21631 					setState(3180);
21632 					ignoredIdentifier();
21633 					}
21634 					break;
21635 				case 3:
21636 					{
21637 					setState(3181);
21638 					match(STRING_);
21639 					}
21640 					break;
21641 				}
21642 				}
21643 				break;
21644 			default:
21645 				throw new NoViableAltException(this);
21646 			}
21647 			}
21648 		}
21649 		catch (RecognitionException re) {
21650 			_localctx.exception = re;
21651 			_errHandler.reportError(this, re);
21652 			_errHandler.recover(this, re);
21653 		}
21654 		finally {
21655 			exitRule();
21656 		}
21657 		return _localctx;
21658 	}
21659 
21660 	public static class OnOffOptionContext extends ParserRuleContext {
21661 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
21662 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
21663 		public OnOffOptionContext(ParserRuleContext parent, int invokingState) {
21664 			super(parent, invokingState);
21665 		}
21666 		@Override public int getRuleIndex() { return RULE_onOffOption; }
21667 		@Override
21668 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21669 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnOffOption(this);
21670 			else return visitor.visitChildren(this);
21671 		}
21672 	}
21673 
21674 	public final OnOffOptionContext onOffOption() throws RecognitionException {
21675 		OnOffOptionContext _localctx = new OnOffOptionContext(_ctx, getState());
21676 		enterRule(_localctx, 460, RULE_onOffOption);
21677 		int _la;
21678 		try {
21679 			enterOuterAlt(_localctx, 1);
21680 			{
21681 			setState(3186);
21682 			_la = _input.LA(1);
21683 			if ( !(_la==ON || _la==OFF) ) {
21684 			_errHandler.recoverInline(this);
21685 			}
21686 			else {
21687 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21688 				_errHandler.reportMatch(this);
21689 				consume();
21690 			}
21691 			}
21692 		}
21693 		catch (RecognitionException re) {
21694 			_localctx.exception = re;
21695 			_errHandler.reportError(this, re);
21696 			_errHandler.recover(this, re);
21697 		}
21698 		finally {
21699 			exitRule();
21700 		}
21701 		return _localctx;
21702 	}
21703 
21704 	public static class DropColumnSpecificationContext extends ParserRuleContext {
21705 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
21706 		public List<ColumnNameContext> columnName() {
21707 			return getRuleContexts(ColumnNameContext.class);
21708 		}
21709 		public ColumnNameContext columnName(int i) {
21710 			return getRuleContext(ColumnNameContext.class,i);
21711 		}
21712 		public IfExistsContext ifExists() {
21713 			return getRuleContext(IfExistsContext.class,0);
21714 		}
21715 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21716 		public TerminalNode COMMA_(int i) {
21717 			return getToken(SQLServerStatementParser.COMMA_, i);
21718 		}
21719 		public DropColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
21720 			super(parent, invokingState);
21721 		}
21722 		@Override public int getRuleIndex() { return RULE_dropColumnSpecification; }
21723 		@Override
21724 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21725 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropColumnSpecification(this);
21726 			else return visitor.visitChildren(this);
21727 		}
21728 	}
21729 
21730 	public final DropColumnSpecificationContext dropColumnSpecification() throws RecognitionException {
21731 		DropColumnSpecificationContext _localctx = new DropColumnSpecificationContext(_ctx, getState());
21732 		enterRule(_localctx, 462, RULE_dropColumnSpecification);
21733 		int _la;
21734 		try {
21735 			int _alt;
21736 			enterOuterAlt(_localctx, 1);
21737 			{
21738 			setState(3188);
21739 			match(COLUMN);
21740 			setState(3190);
21741 			_errHandler.sync(this);
21742 			_la = _input.LA(1);
21743 			if (_la==IF) {
21744 				{
21745 				setState(3189);
21746 				ifExists();
21747 				}
21748 			}
21749 
21750 			setState(3192);
21751 			columnName();
21752 			setState(3197);
21753 			_errHandler.sync(this);
21754 			_alt = getInterpreter().adaptivePredict(_input,287,_ctx);
21755 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
21756 				if ( _alt==1 ) {
21757 					{
21758 					{
21759 					setState(3193);
21760 					match(COMMA_);
21761 					setState(3194);
21762 					columnName();
21763 					}
21764 					} 
21765 				}
21766 				setState(3199);
21767 				_errHandler.sync(this);
21768 				_alt = getInterpreter().adaptivePredict(_input,287,_ctx);
21769 			}
21770 			}
21771 		}
21772 		catch (RecognitionException re) {
21773 			_localctx.exception = re;
21774 			_errHandler.reportError(this, re);
21775 			_errHandler.recover(this, re);
21776 		}
21777 		finally {
21778 			exitRule();
21779 		}
21780 		return _localctx;
21781 	}
21782 
21783 	public static class DropIndexSpecificationContext extends ParserRuleContext {
21784 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
21785 		public List<IndexNameContext> indexName() {
21786 			return getRuleContexts(IndexNameContext.class);
21787 		}
21788 		public IndexNameContext indexName(int i) {
21789 			return getRuleContext(IndexNameContext.class,i);
21790 		}
21791 		public IfExistsContext ifExists() {
21792 			return getRuleContext(IfExistsContext.class,0);
21793 		}
21794 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21795 		public TerminalNode COMMA_(int i) {
21796 			return getToken(SQLServerStatementParser.COMMA_, i);
21797 		}
21798 		public DropIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
21799 			super(parent, invokingState);
21800 		}
21801 		@Override public int getRuleIndex() { return RULE_dropIndexSpecification; }
21802 		@Override
21803 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21804 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropIndexSpecification(this);
21805 			else return visitor.visitChildren(this);
21806 		}
21807 	}
21808 
21809 	public final DropIndexSpecificationContext dropIndexSpecification() throws RecognitionException {
21810 		DropIndexSpecificationContext _localctx = new DropIndexSpecificationContext(_ctx, getState());
21811 		enterRule(_localctx, 464, RULE_dropIndexSpecification);
21812 		int _la;
21813 		try {
21814 			int _alt;
21815 			enterOuterAlt(_localctx, 1);
21816 			{
21817 			setState(3200);
21818 			match(INDEX);
21819 			setState(3202);
21820 			_errHandler.sync(this);
21821 			_la = _input.LA(1);
21822 			if (_la==IF) {
21823 				{
21824 				setState(3201);
21825 				ifExists();
21826 				}
21827 			}
21828 
21829 			setState(3204);
21830 			indexName();
21831 			setState(3209);
21832 			_errHandler.sync(this);
21833 			_alt = getInterpreter().adaptivePredict(_input,289,_ctx);
21834 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
21835 				if ( _alt==1 ) {
21836 					{
21837 					{
21838 					setState(3205);
21839 					match(COMMA_);
21840 					setState(3206);
21841 					indexName();
21842 					}
21843 					} 
21844 				}
21845 				setState(3211);
21846 				_errHandler.sync(this);
21847 				_alt = getInterpreter().adaptivePredict(_input,289,_ctx);
21848 			}
21849 			}
21850 		}
21851 		catch (RecognitionException re) {
21852 			_localctx.exception = re;
21853 			_errHandler.reportError(this, re);
21854 			_errHandler.recover(this, re);
21855 		}
21856 		finally {
21857 			exitRule();
21858 		}
21859 		return _localctx;
21860 	}
21861 
21862 	public static class AlterCheckConstraintContext extends ParserRuleContext {
21863 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
21864 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
21865 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
21866 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
21867 		public ConstraintNameContext constraintName() {
21868 			return getRuleContext(ConstraintNameContext.class,0);
21869 		}
21870 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
21871 		public AlterCheckConstraintContext(ParserRuleContext parent, int invokingState) {
21872 			super(parent, invokingState);
21873 		}
21874 		@Override public int getRuleIndex() { return RULE_alterCheckConstraint; }
21875 		@Override
21876 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21877 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterCheckConstraint(this);
21878 			else return visitor.visitChildren(this);
21879 		}
21880 	}
21881 
21882 	public final AlterCheckConstraintContext alterCheckConstraint() throws RecognitionException {
21883 		AlterCheckConstraintContext _localctx = new AlterCheckConstraintContext(_ctx, getState());
21884 		enterRule(_localctx, 466, RULE_alterCheckConstraint);
21885 		int _la;
21886 		try {
21887 			enterOuterAlt(_localctx, 1);
21888 			{
21889 			setState(3213);
21890 			_errHandler.sync(this);
21891 			_la = _input.LA(1);
21892 			if (_la==WITH) {
21893 				{
21894 				setState(3212);
21895 				match(WITH);
21896 				}
21897 			}
21898 
21899 			setState(3215);
21900 			_la = _input.LA(1);
21901 			if ( !(_la==CHECK || _la==NOCHECK) ) {
21902 			_errHandler.recoverInline(this);
21903 			}
21904 			else {
21905 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21906 				_errHandler.reportMatch(this);
21907 				consume();
21908 			}
21909 			setState(3216);
21910 			match(CONSTRAINT);
21911 			setState(3219);
21912 			_errHandler.sync(this);
21913 			switch (_input.LA(1)) {
21914 			case ALL:
21915 				{
21916 				setState(3217);
21917 				match(ALL);
21918 				}
21919 				break;
21920 			case TRUNCATE:
21921 			case SCHEMA:
21922 			case COLUMNS:
21923 			case PRECISION:
21924 			case FUNCTION:
21925 			case TRIGGER:
21926 			case CAST:
21927 			case SUBSTRING:
21928 			case OFF:
21929 			case GROUP:
21930 			case LIMIT:
21931 			case OFFSET:
21932 			case SAVEPOINT:
21933 			case BOOLEAN:
21934 			case ARRAY:
21935 			case DATE:
21936 			case LOCALTIME:
21937 			case LOCALTIMESTAMP:
21938 			case QUARTER:
21939 			case MONTH:
21940 			case WEEK:
21941 			case DAY:
21942 			case SECOND:
21943 			case MICROSECOND:
21944 			case MAX:
21945 			case MIN:
21946 			case SUM:
21947 			case COUNT:
21948 			case AVG:
21949 			case ENABLE:
21950 			case DISABLE:
21951 			case INSTANCE:
21952 			case DO:
21953 			case DEFINER:
21954 			case SQL:
21955 			case CASCADED:
21956 			case LOCAL:
21957 			case NEXT:
21958 			case NAME:
21959 			case INTEGER:
21960 			case TYPE:
21961 			case TEXT:
21962 			case VIEWS:
21963 			case READ_ONLY:
21964 			case DATABASE:
21965 			case RETURNS:
21966 			case DATEPART:
21967 			case PASSWORD:
21968 			case BINARY:
21969 			case HIDDEN_:
21970 			case MOD:
21971 			case PARTITION:
21972 			case PARTITIONS:
21973 			case TOP:
21974 			case ROW:
21975 			case ROWS:
21976 			case XOR:
21977 			case ALWAYS:
21978 			case ROLE:
21979 			case START:
21980 			case ALGORITHM:
21981 			case AUTO:
21982 			case BLOCKERS:
21983 			case CLUSTERED:
21984 			case NONCLUSTERED:
21985 			case COLUMNSTORE:
21986 			case CONTENT:
21987 			case YEARS:
21988 			case MONTHS:
21989 			case WEEKS:
21990 			case DAYS:
21991 			case MINUTES:
21992 			case DENY:
21993 			case DETERMINISTIC:
21994 			case DISTRIBUTION:
21995 			case DOCUMENT:
21996 			case DURABILITY:
21997 			case ENCRYPTED:
21998 			case FILESTREAM:
21999 			case FILETABLE:
22000 			case FILLFACTOR:
22001 			case FOLLOWING:
22002 			case HASH:
22003 			case HEAP:
22004 			case INBOUND:
22005 			case OUTBOUND:
22006 			case UNBOUNDED:
22007 			case INFINITE:
22008 			case LOGIN:
22009 			case MASKED:
22010 			case MAXDOP:
22011 			case MOVE:
22012 			case NOCHECK:
22013 			case OBJECT:
22014 			case ONLINE:
22015 			case OVER:
22016 			case PAGE:
22017 			case PAUSED:
22018 			case PERIOD:
22019 			case PERSISTED:
22020 			case PRECEDING:
22021 			case RANDOMIZED:
22022 			case RANGE:
22023 			case REBUILD:
22024 			case REPLICATE:
22025 			case REPLICATION:
22026 			case RESUMABLE:
22027 			case ROWGUIDCOL:
22028 			case SAVE:
22029 			case SELF:
22030 			case SPARSE:
22031 			case SWITCH:
22032 			case TRAN:
22033 			case TRANCOUNT:
22034 			case CONTROL:
22035 			case CONCAT:
22036 			case TAKE:
22037 			case OWNERSHIP:
22038 			case DEFINITION:
22039 			case APPLICATION:
22040 			case ASSEMBLY:
22041 			case SYMMETRIC:
22042 			case ASYMMETRIC:
22043 			case SERVER:
22044 			case RECEIVE:
22045 			case CHANGE:
22046 			case TRACE:
22047 			case TRACKING:
22048 			case RESOURCES:
22049 			case SETTINGS:
22050 			case STATE:
22051 			case AVAILABILITY:
22052 			case CREDENTIAL:
22053 			case ENDPOINT:
22054 			case EVENT:
22055 			case NOTIFICATION:
22056 			case LINKED:
22057 			case AUDIT:
22058 			case DDL:
22059 			case XML:
22060 			case IMPERSONATE:
22061 			case SECURABLES:
22062 			case AUTHENTICATE:
22063 			case EXTERNAL:
22064 			case ACCESS:
22065 			case ADMINISTER:
22066 			case BULK:
22067 			case OPERATIONS:
22068 			case UNSAFE:
22069 			case SHUTDOWN:
22070 			case SCOPED:
22071 			case CONFIGURATION:
22072 			case DATASPACE:
22073 			case SERVICE:
22074 			case CERTIFICATE:
22075 			case CONTRACT:
22076 			case ENCRYPTION:
22077 			case MASTER:
22078 			case DATA:
22079 			case SOURCE:
22080 			case FILE:
22081 			case FORMAT:
22082 			case LIBRARY:
22083 			case FULLTEXT:
22084 			case MASK:
22085 			case UNMASK:
22086 			case MESSAGE:
22087 			case REMOTE:
22088 			case BINDING:
22089 			case ROUTE:
22090 			case SECURITY:
22091 			case POLICY:
22092 			case AGGREGATE:
22093 			case QUEUE:
22094 			case RULE:
22095 			case SYNONYM:
22096 			case COLLECTION:
22097 			case SCRIPT:
22098 			case KILL:
22099 			case BACKUP:
22100 			case LOG:
22101 			case SHOWPLAN:
22102 			case SUBSCRIBE:
22103 			case QUERY:
22104 			case NOTIFICATIONS:
22105 			case CHECKPOINT:
22106 			case SEQUENCE:
22107 			case ABORT_AFTER_WAIT:
22108 			case ALLOW_PAGE_LOCKS:
22109 			case ALLOW_ROW_LOCKS:
22110 			case ALL_SPARSE_COLUMNS:
22111 			case BUCKET_COUNT:
22112 			case COLUMNSTORE_ARCHIVE:
22113 			case COLUMN_ENCRYPTION_KEY:
22114 			case COLUMN_SET:
22115 			case COMPRESSION_DELAY:
22116 			case DATABASE_DEAULT:
22117 			case DATA_COMPRESSION:
22118 			case DATA_CONSISTENCY_CHECK:
22119 			case ENCRYPTION_TYPE:
22120 			case SYSTEM_TIME:
22121 			case SYSTEM_VERSIONING:
22122 			case TEXTIMAGE_ON:
22123 			case WAIT_AT_LOW_PRIORITY:
22124 			case STATISTICS_INCREMENTAL:
22125 			case STATISTICS_NORECOMPUTE:
22126 			case ROUND_ROBIN:
22127 			case SCHEMA_AND_DATA:
22128 			case SCHEMA_ONLY:
22129 			case SORT_IN_TEMPDB:
22130 			case IGNORE_DUP_KEY:
22131 			case IMPLICIT_TRANSACTIONS:
22132 			case MAX_DURATION:
22133 			case MEMORY_OPTIMIZED:
22134 			case MIGRATION_STATE:
22135 			case PAD_INDEX:
22136 			case REMOTE_DATA_ARCHIVE:
22137 			case FILESTREAM_ON:
22138 			case FILETABLE_COLLATE_FILENAME:
22139 			case FILETABLE_DIRECTORY:
22140 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
22141 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
22142 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
22143 			case FILTER_PREDICATE:
22144 			case HISTORY_RETENTION_PERIOD:
22145 			case HISTORY_TABLE:
22146 			case LOCK_ESCALATION:
22147 			case DROP_EXISTING:
22148 			case ROW_NUMBER:
22149 			case FIRST:
22150 			case DATETIME2:
22151 			case OUTPUT:
22152 			case INSERTED:
22153 			case DELETED:
22154 			case FILENAME:
22155 			case SIZE:
22156 			case MAXSIZE:
22157 			case FILEGROWTH:
22158 			case UNLIMITED:
22159 			case KB:
22160 			case MB:
22161 			case GB:
22162 			case TB:
22163 			case CONTAINS:
22164 			case MEMORY_OPTIMIZED_DATA:
22165 			case FILEGROUP:
22166 			case NON_TRANSACTED_ACCESS:
22167 			case DB_CHAINING:
22168 			case TRUSTWORTHY:
22169 			case FORWARD_ONLY:
22170 			case KEYSET:
22171 			case FAST_FORWARD:
22172 			case SCROLL_LOCKS:
22173 			case OPTIMISTIC:
22174 			case TYPE_WARNING:
22175 			case SCHEMABINDING:
22176 			case CALLER:
22177 			case OWNER:
22178 			case SNAPSHOT:
22179 			case REPEATABLE:
22180 			case SERIALIZABLE:
22181 			case NATIVE_COMPILATION:
22182 			case VIEW_METADATA:
22183 			case INSTEAD:
22184 			case APPEND:
22185 			case INCREMENT:
22186 			case CACHE:
22187 			case MINVALUE:
22188 			case MAXVALUE:
22189 			case RESTART:
22190 			case LOB_COMPACTION:
22191 			case COMPRESS_ALL_ROW_GROUPS:
22192 			case REORGANIZE:
22193 			case RESUME:
22194 			case PAUSE:
22195 			case ABORT:
22196 			case ACCELERATED_DATABASE_RECOVERY:
22197 			case PERSISTENT_VERSION_STORE_FILEGROUP:
22198 			case IMMEDIATE:
22199 			case NO_WAIT:
22200 			case TARGET_RECOVERY_TIME:
22201 			case SECONDS:
22202 			case HONOR_BROKER_PRIORITY:
22203 			case ERROR_BROKER_CONVERSATIONS:
22204 			case NEW_BROKER:
22205 			case DISABLE_BROKER:
22206 			case ENABLE_BROKER:
22207 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
22208 			case READ_COMMITTED_SNAPSHOT:
22209 			case ALLOW_SNAPSHOT_ISOLATION:
22210 			case RECURSIVE_TRIGGERS:
22211 			case QUOTED_IDENTIFIER:
22212 			case NUMERIC_ROUNDABORT:
22213 			case CONCAT_NULL_YIELDS_NULL:
22214 			case COMPATIBILITY_LEVEL:
22215 			case ARITHABORT:
22216 			case ANSI_WARNINGS:
22217 			case ANSI_PADDING:
22218 			case ANSI_NULLS:
22219 			case ANSI_NULL_DEFAULT:
22220 			case PAGE_VERIFY:
22221 			case CHECKSUM:
22222 			case TORN_PAGE_DETECTION:
22223 			case BULK_LOGGED:
22224 			case RECOVERY:
22225 			case TOTAL_EXECUTION_CPU_TIME_MS:
22226 			case TOTAL_COMPILE_CPU_TIME_MS:
22227 			case STALE_CAPTURE_POLICY_THRESHOLD:
22228 			case EXECUTION_COUNT:
22229 			case QUERY_CAPTURE_POLICY:
22230 			case WAIT_STATS_CAPTURE_MODE:
22231 			case MAX_PLANS_PER_QUERY:
22232 			case QUERY_CAPTURE_MODE:
22233 			case SIZE_BASED_CLEANUP_MODE:
22234 			case INTERVAL_LENGTH_MINUTES:
22235 			case MAX_STORAGE_SIZE_MB:
22236 			case DATA_FLUSH_INTERVAL_SECONDS:
22237 			case CLEANUP_POLICY:
22238 			case CUSTOM:
22239 			case STALE_QUERY_THRESHOLD_DAYS:
22240 			case OPERATION_MODE:
22241 			case QUERY_STORE:
22242 			case CURSOR_DEFAULT:
22243 			case GLOBAL:
22244 			case CURSOR_CLOSE_ON_COMMIT:
22245 			case HOURS:
22246 			case CHANGE_RETENTION:
22247 			case AUTO_CLEANUP:
22248 			case CHANGE_TRACKING:
22249 			case AUTOMATIC_TUNING:
22250 			case FORCE_LAST_GOOD_PLAN:
22251 			case AUTO_UPDATE_STATISTICS_ASYNC:
22252 			case AUTO_UPDATE_STATISTICS:
22253 			case AUTO_SHRINK:
22254 			case AUTO_CREATE_STATISTICS:
22255 			case INCREMENTAL:
22256 			case AUTO_CLOSE:
22257 			case DATA_RETENTION:
22258 			case TEMPORAL_HISTORY_RETENTION:
22259 			case EDITION:
22260 			case MIXED_PAGE_ALLOCATION:
22261 			case DISABLED:
22262 			case ALLOWED:
22263 			case HADR:
22264 			case MULTI_USER:
22265 			case RESTRICTED_USER:
22266 			case SINGLE_USER:
22267 			case OFFLINE:
22268 			case EMERGENCY:
22269 			case SUSPEND:
22270 			case DATE_CORRELATION_OPTIMIZATION:
22271 			case ELASTIC_POOL:
22272 			case SERVICE_OBJECTIVE:
22273 			case DATABASE_NAME:
22274 			case ALLOW_CONNECTIONS:
22275 			case GEO:
22276 			case NAMED:
22277 			case DATEFIRST:
22278 			case BACKUP_STORAGE_REDUNDANCY:
22279 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
22280 			case SECONDARY:
22281 			case FAILOVER:
22282 			case DEFAULT_FULLTEXT_LANGUAGE:
22283 			case DEFAULT_LANGUAGE:
22284 			case INLINE:
22285 			case NESTED_TRIGGERS:
22286 			case TRANSFORM_NOISE_WORDS:
22287 			case TWO_DIGIT_YEAR_CUTOFF:
22288 			case PERSISTENT_LOG_BUFFER:
22289 			case DIRECTORY_NAME:
22290 			case DATEFORMAT:
22291 			case DELAYED_DURABILITY:
22292 			case AUTHORIZATION:
22293 			case TRANSFER:
22294 			case PROVIDER:
22295 			case SEARCH:
22296 			case MEMBER:
22297 			case IDENTIFIER_:
22298 			case DELIMITED_IDENTIFIER_:
22299 				{
22300 				setState(3218);
22301 				constraintName();
22302 				}
22303 				break;
22304 			default:
22305 				throw new NoViableAltException(this);
22306 			}
22307 			}
22308 		}
22309 		catch (RecognitionException re) {
22310 			_localctx.exception = re;
22311 			_errHandler.reportError(this, re);
22312 			_errHandler.recover(this, re);
22313 		}
22314 		finally {
22315 			exitRule();
22316 		}
22317 		return _localctx;
22318 	}
22319 
22320 	public static class AlterTableTriggerContext extends ParserRuleContext {
22321 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
22322 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
22323 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
22324 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
22325 		public IgnoredIdentifiersContext ignoredIdentifiers() {
22326 			return getRuleContext(IgnoredIdentifiersContext.class,0);
22327 		}
22328 		public AlterTableTriggerContext(ParserRuleContext parent, int invokingState) {
22329 			super(parent, invokingState);
22330 		}
22331 		@Override public int getRuleIndex() { return RULE_alterTableTrigger; }
22332 		@Override
22333 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22334 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableTrigger(this);
22335 			else return visitor.visitChildren(this);
22336 		}
22337 	}
22338 
22339 	public final AlterTableTriggerContext alterTableTrigger() throws RecognitionException {
22340 		AlterTableTriggerContext _localctx = new AlterTableTriggerContext(_ctx, getState());
22341 		enterRule(_localctx, 468, RULE_alterTableTrigger);
22342 		int _la;
22343 		try {
22344 			enterOuterAlt(_localctx, 1);
22345 			{
22346 			setState(3221);
22347 			_la = _input.LA(1);
22348 			if ( !(_la==ENABLE || _la==DISABLE) ) {
22349 			_errHandler.recoverInline(this);
22350 			}
22351 			else {
22352 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22353 				_errHandler.reportMatch(this);
22354 				consume();
22355 			}
22356 			setState(3222);
22357 			match(TRIGGER);
22358 			setState(3225);
22359 			_errHandler.sync(this);
22360 			switch (_input.LA(1)) {
22361 			case ALL:
22362 				{
22363 				setState(3223);
22364 				match(ALL);
22365 				}
22366 				break;
22367 			case IDENTIFIER_:
22368 				{
22369 				setState(3224);
22370 				ignoredIdentifiers();
22371 				}
22372 				break;
22373 			default:
22374 				throw new NoViableAltException(this);
22375 			}
22376 			}
22377 		}
22378 		catch (RecognitionException re) {
22379 			_localctx.exception = re;
22380 			_errHandler.reportError(this, re);
22381 			_errHandler.recover(this, re);
22382 		}
22383 		finally {
22384 			exitRule();
22385 		}
22386 		return _localctx;
22387 	}
22388 
22389 	public static class AlterSwitchContext extends ParserRuleContext {
22390 		public TerminalNode SWITCH() { return getToken(SQLServerStatementParser.SWITCH, 0); }
22391 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
22392 		public TableNameContext tableName() {
22393 			return getRuleContext(TableNameContext.class,0);
22394 		}
22395 		public List<TerminalNode> PARTITION() { return getTokens(SQLServerStatementParser.PARTITION); }
22396 		public TerminalNode PARTITION(int i) {
22397 			return getToken(SQLServerStatementParser.PARTITION, i);
22398 		}
22399 		public List<ExprContext> expr() {
22400 			return getRuleContexts(ExprContext.class);
22401 		}
22402 		public ExprContext expr(int i) {
22403 			return getRuleContext(ExprContext.class,i);
22404 		}
22405 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
22406 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22407 		public LowPriorityLockWaitContext lowPriorityLockWait() {
22408 			return getRuleContext(LowPriorityLockWaitContext.class,0);
22409 		}
22410 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22411 		public AlterSwitchContext(ParserRuleContext parent, int invokingState) {
22412 			super(parent, invokingState);
22413 		}
22414 		@Override public int getRuleIndex() { return RULE_alterSwitch; }
22415 		@Override
22416 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22417 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSwitch(this);
22418 			else return visitor.visitChildren(this);
22419 		}
22420 	}
22421 
22422 	public final AlterSwitchContext alterSwitch() throws RecognitionException {
22423 		AlterSwitchContext _localctx = new AlterSwitchContext(_ctx, getState());
22424 		enterRule(_localctx, 470, RULE_alterSwitch);
22425 		int _la;
22426 		try {
22427 			enterOuterAlt(_localctx, 1);
22428 			{
22429 			setState(3227);
22430 			match(SWITCH);
22431 			setState(3230);
22432 			_errHandler.sync(this);
22433 			_la = _input.LA(1);
22434 			if (_la==PARTITION) {
22435 				{
22436 				setState(3228);
22437 				match(PARTITION);
22438 				setState(3229);
22439 				expr(0);
22440 				}
22441 			}
22442 
22443 			setState(3232);
22444 			match(TO);
22445 			setState(3233);
22446 			tableName();
22447 			setState(3236);
22448 			_errHandler.sync(this);
22449 			_la = _input.LA(1);
22450 			if (_la==PARTITION) {
22451 				{
22452 				setState(3234);
22453 				match(PARTITION);
22454 				setState(3235);
22455 				expr(0);
22456 				}
22457 			}
22458 
22459 			setState(3243);
22460 			_errHandler.sync(this);
22461 			switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) {
22462 			case 1:
22463 				{
22464 				setState(3238);
22465 				match(WITH);
22466 				setState(3239);
22467 				match(LP_);
22468 				setState(3240);
22469 				lowPriorityLockWait();
22470 				setState(3241);
22471 				match(RP_);
22472 				}
22473 				break;
22474 			}
22475 			}
22476 		}
22477 		catch (RecognitionException re) {
22478 			_localctx.exception = re;
22479 			_errHandler.reportError(this, re);
22480 			_errHandler.recover(this, re);
22481 		}
22482 		finally {
22483 			exitRule();
22484 		}
22485 		return _localctx;
22486 	}
22487 
22488 	public static class AlterSetContext extends ParserRuleContext {
22489 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
22490 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22491 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22492 		public SetFileStreamClauseContext setFileStreamClause() {
22493 			return getRuleContext(SetFileStreamClauseContext.class,0);
22494 		}
22495 		public SetSystemVersionClauseContext setSystemVersionClause() {
22496 			return getRuleContext(SetSystemVersionClauseContext.class,0);
22497 		}
22498 		public AlterSetContext(ParserRuleContext parent, int invokingState) {
22499 			super(parent, invokingState);
22500 		}
22501 		@Override public int getRuleIndex() { return RULE_alterSet; }
22502 		@Override
22503 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22504 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSet(this);
22505 			else return visitor.visitChildren(this);
22506 		}
22507 	}
22508 
22509 	public final AlterSetContext alterSet() throws RecognitionException {
22510 		AlterSetContext _localctx = new AlterSetContext(_ctx, getState());
22511 		enterRule(_localctx, 472, RULE_alterSet);
22512 		try {
22513 			enterOuterAlt(_localctx, 1);
22514 			{
22515 			setState(3245);
22516 			match(SET);
22517 			setState(3246);
22518 			match(LP_);
22519 			setState(3249);
22520 			_errHandler.sync(this);
22521 			switch (_input.LA(1)) {
22522 			case FILESTREAM_ON:
22523 				{
22524 				setState(3247);
22525 				setFileStreamClause();
22526 				}
22527 				break;
22528 			case SYSTEM_VERSIONING:
22529 				{
22530 				setState(3248);
22531 				setSystemVersionClause();
22532 				}
22533 				break;
22534 			default:
22535 				throw new NoViableAltException(this);
22536 			}
22537 			setState(3251);
22538 			match(RP_);
22539 			}
22540 		}
22541 		catch (RecognitionException re) {
22542 			_localctx.exception = re;
22543 			_errHandler.reportError(this, re);
22544 			_errHandler.recover(this, re);
22545 		}
22546 		finally {
22547 			exitRule();
22548 		}
22549 		return _localctx;
22550 	}
22551 
22552 	public static class SetFileStreamClauseContext extends ParserRuleContext {
22553 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
22554 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22555 		public SchemaNameContext schemaName() {
22556 			return getRuleContext(SchemaNameContext.class,0);
22557 		}
22558 		public IgnoredIdentifierContext ignoredIdentifier() {
22559 			return getRuleContext(IgnoredIdentifierContext.class,0);
22560 		}
22561 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
22562 		public SetFileStreamClauseContext(ParserRuleContext parent, int invokingState) {
22563 			super(parent, invokingState);
22564 		}
22565 		@Override public int getRuleIndex() { return RULE_setFileStreamClause; }
22566 		@Override
22567 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22568 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetFileStreamClause(this);
22569 			else return visitor.visitChildren(this);
22570 		}
22571 	}
22572 
22573 	public final SetFileStreamClauseContext setFileStreamClause() throws RecognitionException {
22574 		SetFileStreamClauseContext _localctx = new SetFileStreamClauseContext(_ctx, getState());
22575 		enterRule(_localctx, 474, RULE_setFileStreamClause);
22576 		try {
22577 			enterOuterAlt(_localctx, 1);
22578 			{
22579 			setState(3253);
22580 			match(FILESTREAM_ON);
22581 			setState(3254);
22582 			match(EQ_);
22583 			setState(3258);
22584 			_errHandler.sync(this);
22585 			switch ( getInterpreter().adaptivePredict(_input,297,_ctx) ) {
22586 			case 1:
22587 				{
22588 				setState(3255);
22589 				schemaName();
22590 				}
22591 				break;
22592 			case 2:
22593 				{
22594 				setState(3256);
22595 				ignoredIdentifier();
22596 				}
22597 				break;
22598 			case 3:
22599 				{
22600 				setState(3257);
22601 				match(STRING_);
22602 				}
22603 				break;
22604 			}
22605 			}
22606 		}
22607 		catch (RecognitionException re) {
22608 			_localctx.exception = re;
22609 			_errHandler.reportError(this, re);
22610 			_errHandler.recover(this, re);
22611 		}
22612 		finally {
22613 			exitRule();
22614 		}
22615 		return _localctx;
22616 	}
22617 
22618 	public static class SetSystemVersionClauseContext extends ParserRuleContext {
22619 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
22620 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22621 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
22622 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
22623 		public AlterSetOnClauseContext alterSetOnClause() {
22624 			return getRuleContext(AlterSetOnClauseContext.class,0);
22625 		}
22626 		public SetSystemVersionClauseContext(ParserRuleContext parent, int invokingState) {
22627 			super(parent, invokingState);
22628 		}
22629 		@Override public int getRuleIndex() { return RULE_setSystemVersionClause; }
22630 		@Override
22631 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22632 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetSystemVersionClause(this);
22633 			else return visitor.visitChildren(this);
22634 		}
22635 	}
22636 
22637 	public final SetSystemVersionClauseContext setSystemVersionClause() throws RecognitionException {
22638 		SetSystemVersionClauseContext _localctx = new SetSystemVersionClauseContext(_ctx, getState());
22639 		enterRule(_localctx, 476, RULE_setSystemVersionClause);
22640 		int _la;
22641 		try {
22642 			enterOuterAlt(_localctx, 1);
22643 			{
22644 			setState(3260);
22645 			match(SYSTEM_VERSIONING);
22646 			setState(3261);
22647 			match(EQ_);
22648 			setState(3267);
22649 			_errHandler.sync(this);
22650 			switch (_input.LA(1)) {
22651 			case OFF:
22652 				{
22653 				setState(3262);
22654 				match(OFF);
22655 				}
22656 				break;
22657 			case ON:
22658 				{
22659 				setState(3263);
22660 				match(ON);
22661 				setState(3265);
22662 				_errHandler.sync(this);
22663 				_la = _input.LA(1);
22664 				if (_la==LP_) {
22665 					{
22666 					setState(3264);
22667 					alterSetOnClause();
22668 					}
22669 				}
22670 
22671 				}
22672 				break;
22673 			default:
22674 				throw new NoViableAltException(this);
22675 			}
22676 			}
22677 		}
22678 		catch (RecognitionException re) {
22679 			_localctx.exception = re;
22680 			_errHandler.reportError(this, re);
22681 			_errHandler.recover(this, re);
22682 		}
22683 		finally {
22684 			exitRule();
22685 		}
22686 		return _localctx;
22687 	}
22688 
22689 	public static class AlterSetOnClauseContext extends ParserRuleContext {
22690 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22691 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22692 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
22693 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22694 		public TableNameContext tableName() {
22695 			return getRuleContext(TableNameContext.class,0);
22696 		}
22697 		public DataConsistencyCheckClauseContext dataConsistencyCheckClause() {
22698 			return getRuleContext(DataConsistencyCheckClauseContext.class,0);
22699 		}
22700 		public HistoryRetentionPeriodClauseContext historyRetentionPeriodClause() {
22701 			return getRuleContext(HistoryRetentionPeriodClauseContext.class,0);
22702 		}
22703 		public AlterSetOnClauseContext(ParserRuleContext parent, int invokingState) {
22704 			super(parent, invokingState);
22705 		}
22706 		@Override public int getRuleIndex() { return RULE_alterSetOnClause; }
22707 		@Override
22708 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22709 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSetOnClause(this);
22710 			else return visitor.visitChildren(this);
22711 		}
22712 	}
22713 
22714 	public final AlterSetOnClauseContext alterSetOnClause() throws RecognitionException {
22715 		AlterSetOnClauseContext _localctx = new AlterSetOnClauseContext(_ctx, getState());
22716 		enterRule(_localctx, 478, RULE_alterSetOnClause);
22717 		int _la;
22718 		try {
22719 			enterOuterAlt(_localctx, 1);
22720 			{
22721 			setState(3269);
22722 			match(LP_);
22723 			setState(3273);
22724 			_errHandler.sync(this);
22725 			_la = _input.LA(1);
22726 			if (_la==HISTORY_TABLE) {
22727 				{
22728 				setState(3270);
22729 				match(HISTORY_TABLE);
22730 				setState(3271);
22731 				match(EQ_);
22732 				setState(3272);
22733 				tableName();
22734 				}
22735 			}
22736 
22737 			setState(3276);
22738 			_errHandler.sync(this);
22739 			switch ( getInterpreter().adaptivePredict(_input,301,_ctx) ) {
22740 			case 1:
22741 				{
22742 				setState(3275);
22743 				dataConsistencyCheckClause();
22744 				}
22745 				break;
22746 			}
22747 			setState(3279);
22748 			_errHandler.sync(this);
22749 			_la = _input.LA(1);
22750 			if (_la==COMMA_ || _la==HISTORY_RETENTION_PERIOD) {
22751 				{
22752 				setState(3278);
22753 				historyRetentionPeriodClause();
22754 				}
22755 			}
22756 
22757 			setState(3281);
22758 			match(RP_);
22759 			}
22760 		}
22761 		catch (RecognitionException re) {
22762 			_localctx.exception = re;
22763 			_errHandler.reportError(this, re);
22764 			_errHandler.recover(this, re);
22765 		}
22766 		finally {
22767 			exitRule();
22768 		}
22769 		return _localctx;
22770 	}
22771 
22772 	public static class DataConsistencyCheckClauseContext extends ParserRuleContext {
22773 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
22774 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22775 		public OnOffOptionContext onOffOption() {
22776 			return getRuleContext(OnOffOptionContext.class,0);
22777 		}
22778 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
22779 		public DataConsistencyCheckClauseContext(ParserRuleContext parent, int invokingState) {
22780 			super(parent, invokingState);
22781 		}
22782 		@Override public int getRuleIndex() { return RULE_dataConsistencyCheckClause; }
22783 		@Override
22784 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22785 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataConsistencyCheckClause(this);
22786 			else return visitor.visitChildren(this);
22787 		}
22788 	}
22789 
22790 	public final DataConsistencyCheckClauseContext dataConsistencyCheckClause() throws RecognitionException {
22791 		DataConsistencyCheckClauseContext _localctx = new DataConsistencyCheckClauseContext(_ctx, getState());
22792 		enterRule(_localctx, 480, RULE_dataConsistencyCheckClause);
22793 		int _la;
22794 		try {
22795 			enterOuterAlt(_localctx, 1);
22796 			{
22797 			setState(3284);
22798 			_errHandler.sync(this);
22799 			_la = _input.LA(1);
22800 			if (_la==COMMA_) {
22801 				{
22802 				setState(3283);
22803 				match(COMMA_);
22804 				}
22805 			}
22806 
22807 			setState(3286);
22808 			match(DATA_CONSISTENCY_CHECK);
22809 			setState(3287);
22810 			match(EQ_);
22811 			setState(3288);
22812 			onOffOption();
22813 			}
22814 		}
22815 		catch (RecognitionException re) {
22816 			_localctx.exception = re;
22817 			_errHandler.reportError(this, re);
22818 			_errHandler.recover(this, re);
22819 		}
22820 		finally {
22821 			exitRule();
22822 		}
22823 		return _localctx;
22824 	}
22825 
22826 	public static class HistoryRetentionPeriodClauseContext extends ParserRuleContext {
22827 		public TerminalNode HISTORY_RETENTION_PERIOD() { return getToken(SQLServerStatementParser.HISTORY_RETENTION_PERIOD, 0); }
22828 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22829 		public HistoryRetentionPeriodContext historyRetentionPeriod() {
22830 			return getRuleContext(HistoryRetentionPeriodContext.class,0);
22831 		}
22832 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
22833 		public HistoryRetentionPeriodClauseContext(ParserRuleContext parent, int invokingState) {
22834 			super(parent, invokingState);
22835 		}
22836 		@Override public int getRuleIndex() { return RULE_historyRetentionPeriodClause; }
22837 		@Override
22838 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22839 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHistoryRetentionPeriodClause(this);
22840 			else return visitor.visitChildren(this);
22841 		}
22842 	}
22843 
22844 	public final HistoryRetentionPeriodClauseContext historyRetentionPeriodClause() throws RecognitionException {
22845 		HistoryRetentionPeriodClauseContext _localctx = new HistoryRetentionPeriodClauseContext(_ctx, getState());
22846 		enterRule(_localctx, 482, RULE_historyRetentionPeriodClause);
22847 		int _la;
22848 		try {
22849 			enterOuterAlt(_localctx, 1);
22850 			{
22851 			setState(3291);
22852 			_errHandler.sync(this);
22853 			_la = _input.LA(1);
22854 			if (_la==COMMA_) {
22855 				{
22856 				setState(3290);
22857 				match(COMMA_);
22858 				}
22859 			}
22860 
22861 			setState(3293);
22862 			match(HISTORY_RETENTION_PERIOD);
22863 			setState(3294);
22864 			match(EQ_);
22865 			setState(3295);
22866 			historyRetentionPeriod();
22867 			}
22868 		}
22869 		catch (RecognitionException re) {
22870 			_localctx.exception = re;
22871 			_errHandler.reportError(this, re);
22872 			_errHandler.recover(this, re);
22873 		}
22874 		finally {
22875 			exitRule();
22876 		}
22877 		return _localctx;
22878 	}
22879 
22880 	public static class HistoryRetentionPeriodContext extends ParserRuleContext {
22881 		public TerminalNode INFINITE() { return getToken(SQLServerStatementParser.INFINITE, 0); }
22882 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
22883 		public TerminalNode DAY() { return getToken(SQLServerStatementParser.DAY, 0); }
22884 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
22885 		public TerminalNode WEEK() { return getToken(SQLServerStatementParser.WEEK, 0); }
22886 		public TerminalNode WEEKS() { return getToken(SQLServerStatementParser.WEEKS, 0); }
22887 		public TerminalNode MONTH() { return getToken(SQLServerStatementParser.MONTH, 0); }
22888 		public TerminalNode MONTHS() { return getToken(SQLServerStatementParser.MONTHS, 0); }
22889 		public TerminalNode YEAR() { return getToken(SQLServerStatementParser.YEAR, 0); }
22890 		public TerminalNode YEARS() { return getToken(SQLServerStatementParser.YEARS, 0); }
22891 		public HistoryRetentionPeriodContext(ParserRuleContext parent, int invokingState) {
22892 			super(parent, invokingState);
22893 		}
22894 		@Override public int getRuleIndex() { return RULE_historyRetentionPeriod; }
22895 		@Override
22896 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22897 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHistoryRetentionPeriod(this);
22898 			else return visitor.visitChildren(this);
22899 		}
22900 	}
22901 
22902 	public final HistoryRetentionPeriodContext historyRetentionPeriod() throws RecognitionException {
22903 		HistoryRetentionPeriodContext _localctx = new HistoryRetentionPeriodContext(_ctx, getState());
22904 		enterRule(_localctx, 484, RULE_historyRetentionPeriod);
22905 		int _la;
22906 		try {
22907 			setState(3300);
22908 			_errHandler.sync(this);
22909 			switch (_input.LA(1)) {
22910 			case INFINITE:
22911 				enterOuterAlt(_localctx, 1);
22912 				{
22913 				setState(3297);
22914 				match(INFINITE);
22915 				}
22916 				break;
22917 			case NUMBER_:
22918 				enterOuterAlt(_localctx, 2);
22919 				{
22920 				{
22921 				setState(3298);
22922 				match(NUMBER_);
22923 				setState(3299);
22924 				_la = _input.LA(1);
22925 				if ( !(((((_la - 140)) & ~0x3f) == 0 && ((1L << (_la - 140)) & ((1L << (YEAR - 140)) | (1L << (MONTH - 140)) | (1L << (WEEK - 140)) | (1L << (DAY - 140)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)))) != 0)) ) {
22926 				_errHandler.recoverInline(this);
22927 				}
22928 				else {
22929 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22930 					_errHandler.reportMatch(this);
22931 					consume();
22932 				}
22933 				}
22934 				}
22935 				break;
22936 			default:
22937 				throw new NoViableAltException(this);
22938 			}
22939 		}
22940 		catch (RecognitionException re) {
22941 			_localctx.exception = re;
22942 			_errHandler.reportError(this, re);
22943 			_errHandler.recover(this, re);
22944 		}
22945 		finally {
22946 			exitRule();
22947 		}
22948 		return _localctx;
22949 	}
22950 
22951 	public static class AlterTableTableIndexContext extends ParserRuleContext {
22952 		public IndexWithNameContext indexWithName() {
22953 			return getRuleContext(IndexWithNameContext.class,0);
22954 		}
22955 		public IndexNonClusterClauseContext indexNonClusterClause() {
22956 			return getRuleContext(IndexNonClusterClauseContext.class,0);
22957 		}
22958 		public IndexClusterClauseContext indexClusterClause() {
22959 			return getRuleContext(IndexClusterClauseContext.class,0);
22960 		}
22961 		public AlterTableTableIndexContext(ParserRuleContext parent, int invokingState) {
22962 			super(parent, invokingState);
22963 		}
22964 		@Override public int getRuleIndex() { return RULE_alterTableTableIndex; }
22965 		@Override
22966 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22967 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableTableIndex(this);
22968 			else return visitor.visitChildren(this);
22969 		}
22970 	}
22971 
22972 	public final AlterTableTableIndexContext alterTableTableIndex() throws RecognitionException {
22973 		AlterTableTableIndexContext _localctx = new AlterTableTableIndexContext(_ctx, getState());
22974 		enterRule(_localctx, 486, RULE_alterTableTableIndex);
22975 		try {
22976 			enterOuterAlt(_localctx, 1);
22977 			{
22978 			setState(3302);
22979 			indexWithName();
22980 			setState(3305);
22981 			_errHandler.sync(this);
22982 			switch (_input.LA(1)) {
22983 			case NONCLUSTERED:
22984 				{
22985 				setState(3303);
22986 				indexNonClusterClause();
22987 				}
22988 				break;
22989 			case CLUSTERED:
22990 				{
22991 				setState(3304);
22992 				indexClusterClause();
22993 				}
22994 				break;
22995 			default:
22996 				throw new NoViableAltException(this);
22997 			}
22998 			}
22999 		}
23000 		catch (RecognitionException re) {
23001 			_localctx.exception = re;
23002 			_errHandler.reportError(this, re);
23003 			_errHandler.recover(this, re);
23004 		}
23005 		finally {
23006 			exitRule();
23007 		}
23008 		return _localctx;
23009 	}
23010 
23011 	public static class IndexWithNameContext extends ParserRuleContext {
23012 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
23013 		public IndexNameContext indexName() {
23014 			return getRuleContext(IndexNameContext.class,0);
23015 		}
23016 		public IndexWithNameContext(ParserRuleContext parent, int invokingState) {
23017 			super(parent, invokingState);
23018 		}
23019 		@Override public int getRuleIndex() { return RULE_indexWithName; }
23020 		@Override
23021 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23022 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexWithName(this);
23023 			else return visitor.visitChildren(this);
23024 		}
23025 	}
23026 
23027 	public final IndexWithNameContext indexWithName() throws RecognitionException {
23028 		IndexWithNameContext _localctx = new IndexWithNameContext(_ctx, getState());
23029 		enterRule(_localctx, 488, RULE_indexWithName);
23030 		try {
23031 			enterOuterAlt(_localctx, 1);
23032 			{
23033 			setState(3307);
23034 			match(INDEX);
23035 			setState(3308);
23036 			indexName();
23037 			}
23038 		}
23039 		catch (RecognitionException re) {
23040 			_localctx.exception = re;
23041 			_errHandler.reportError(this, re);
23042 			_errHandler.recover(this, re);
23043 		}
23044 		finally {
23045 			exitRule();
23046 		}
23047 		return _localctx;
23048 	}
23049 
23050 	public static class IndexNonClusterClauseContext extends ParserRuleContext {
23051 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
23052 		public HashWithBucketContext hashWithBucket() {
23053 			return getRuleContext(HashWithBucketContext.class,0);
23054 		}
23055 		public ColumnNamesWithSortContext columnNamesWithSort() {
23056 			return getRuleContext(ColumnNamesWithSortContext.class,0);
23057 		}
23058 		public AlterTableIndexOnClauseContext alterTableIndexOnClause() {
23059 			return getRuleContext(AlterTableIndexOnClauseContext.class,0);
23060 		}
23061 		public IndexNonClusterClauseContext(ParserRuleContext parent, int invokingState) {
23062 			super(parent, invokingState);
23063 		}
23064 		@Override public int getRuleIndex() { return RULE_indexNonClusterClause; }
23065 		@Override
23066 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23067 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexNonClusterClause(this);
23068 			else return visitor.visitChildren(this);
23069 		}
23070 	}
23071 
23072 	public final IndexNonClusterClauseContext indexNonClusterClause() throws RecognitionException {
23073 		IndexNonClusterClauseContext _localctx = new IndexNonClusterClauseContext(_ctx, getState());
23074 		enterRule(_localctx, 490, RULE_indexNonClusterClause);
23075 		int _la;
23076 		try {
23077 			enterOuterAlt(_localctx, 1);
23078 			{
23079 			setState(3310);
23080 			match(NONCLUSTERED);
23081 			setState(3316);
23082 			_errHandler.sync(this);
23083 			switch (_input.LA(1)) {
23084 			case HASH:
23085 				{
23086 				setState(3311);
23087 				hashWithBucket();
23088 				}
23089 				break;
23090 			case LP_:
23091 				{
23092 				setState(3312);
23093 				columnNamesWithSort();
23094 				setState(3314);
23095 				_errHandler.sync(this);
23096 				_la = _input.LA(1);
23097 				if (_la==ON || _la==DEFAULT) {
23098 					{
23099 					setState(3313);
23100 					alterTableIndexOnClause();
23101 					}
23102 				}
23103 
23104 				}
23105 				break;
23106 			default:
23107 				throw new NoViableAltException(this);
23108 			}
23109 			}
23110 		}
23111 		catch (RecognitionException re) {
23112 			_localctx.exception = re;
23113 			_errHandler.reportError(this, re);
23114 			_errHandler.recover(this, re);
23115 		}
23116 		finally {
23117 			exitRule();
23118 		}
23119 		return _localctx;
23120 	}
23121 
23122 	public static class AlterTableIndexOnClauseContext extends ParserRuleContext {
23123 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23124 		public IgnoredIdentifierContext ignoredIdentifier() {
23125 			return getRuleContext(IgnoredIdentifierContext.class,0);
23126 		}
23127 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
23128 		public AlterTableIndexOnClauseContext(ParserRuleContext parent, int invokingState) {
23129 			super(parent, invokingState);
23130 		}
23131 		@Override public int getRuleIndex() { return RULE_alterTableIndexOnClause; }
23132 		@Override
23133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableIndexOnClause(this);
23135 			else return visitor.visitChildren(this);
23136 		}
23137 	}
23138 
23139 	public final AlterTableIndexOnClauseContext alterTableIndexOnClause() throws RecognitionException {
23140 		AlterTableIndexOnClauseContext _localctx = new AlterTableIndexOnClauseContext(_ctx, getState());
23141 		enterRule(_localctx, 492, RULE_alterTableIndexOnClause);
23142 		try {
23143 			setState(3321);
23144 			_errHandler.sync(this);
23145 			switch (_input.LA(1)) {
23146 			case ON:
23147 				enterOuterAlt(_localctx, 1);
23148 				{
23149 				setState(3318);
23150 				match(ON);
23151 				setState(3319);
23152 				ignoredIdentifier();
23153 				}
23154 				break;
23155 			case DEFAULT:
23156 				enterOuterAlt(_localctx, 2);
23157 				{
23158 				setState(3320);
23159 				match(DEFAULT);
23160 				}
23161 				break;
23162 			default:
23163 				throw new NoViableAltException(this);
23164 			}
23165 		}
23166 		catch (RecognitionException re) {
23167 			_localctx.exception = re;
23168 			_errHandler.reportError(this, re);
23169 			_errHandler.recover(this, re);
23170 		}
23171 		finally {
23172 			exitRule();
23173 		}
23174 		return _localctx;
23175 	}
23176 
23177 	public static class IndexClusterClauseContext extends ParserRuleContext {
23178 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
23179 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
23180 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
23181 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
23182 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23183 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
23184 		public IndexOnClauseContext indexOnClause() {
23185 			return getRuleContext(IndexOnClauseContext.class,0);
23186 		}
23187 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
23188 		public IndexClusterClauseContext(ParserRuleContext parent, int invokingState) {
23189 			super(parent, invokingState);
23190 		}
23191 		@Override public int getRuleIndex() { return RULE_indexClusterClause; }
23192 		@Override
23193 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23194 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexClusterClause(this);
23195 			else return visitor.visitChildren(this);
23196 		}
23197 	}
23198 
23199 	public final IndexClusterClauseContext indexClusterClause() throws RecognitionException {
23200 		IndexClusterClauseContext _localctx = new IndexClusterClauseContext(_ctx, getState());
23201 		enterRule(_localctx, 494, RULE_indexClusterClause);
23202 		int _la;
23203 		try {
23204 			enterOuterAlt(_localctx, 1);
23205 			{
23206 			setState(3323);
23207 			match(CLUSTERED);
23208 			setState(3324);
23209 			match(COLUMNSTORE);
23210 			setState(3332);
23211 			_errHandler.sync(this);
23212 			switch ( getInterpreter().adaptivePredict(_input,311,_ctx) ) {
23213 			case 1:
23214 				{
23215 				setState(3325);
23216 				match(WITH);
23217 				setState(3326);
23218 				match(COMPRESSION_DELAY);
23219 				setState(3327);
23220 				match(EQ_);
23221 				setState(3328);
23222 				match(NUMBER_);
23223 				setState(3330);
23224 				_errHandler.sync(this);
23225 				_la = _input.LA(1);
23226 				if (_la==MINUTES) {
23227 					{
23228 					setState(3329);
23229 					match(MINUTES);
23230 					}
23231 				}
23232 
23233 				}
23234 				break;
23235 			}
23236 			setState(3335);
23237 			_errHandler.sync(this);
23238 			_la = _input.LA(1);
23239 			if (_la==ON) {
23240 				{
23241 				setState(3334);
23242 				indexOnClause();
23243 				}
23244 			}
23245 
23246 			}
23247 		}
23248 		catch (RecognitionException re) {
23249 			_localctx.exception = re;
23250 			_errHandler.reportError(this, re);
23251 			_errHandler.recover(this, re);
23252 		}
23253 		finally {
23254 			exitRule();
23255 		}
23256 		return _localctx;
23257 	}
23258 
23259 	public static class AlterTableOptionContext extends ParserRuleContext {
23260 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
23261 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23262 		public TerminalNode LOCK_ESCALATION() { return getToken(SQLServerStatementParser.LOCK_ESCALATION, 0); }
23263 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23264 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23265 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
23266 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
23267 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
23268 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
23269 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23270 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
23271 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
23272 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
23273 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
23274 		public OnHistoryTableClauseContext onHistoryTableClause() {
23275 			return getRuleContext(OnHistoryTableClauseContext.class,0);
23276 		}
23277 		public AlterTableOptionContext(ParserRuleContext parent, int invokingState) {
23278 			super(parent, invokingState);
23279 		}
23280 		@Override public int getRuleIndex() { return RULE_alterTableOption; }
23281 		@Override
23282 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23283 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableOption(this);
23284 			else return visitor.visitChildren(this);
23285 		}
23286 	}
23287 
23288 	public final AlterTableOptionContext alterTableOption() throws RecognitionException {
23289 		AlterTableOptionContext _localctx = new AlterTableOptionContext(_ctx, getState());
23290 		enterRule(_localctx, 496, RULE_alterTableOption);
23291 		int _la;
23292 		try {
23293 			setState(3355);
23294 			_errHandler.sync(this);
23295 			switch (_input.LA(1)) {
23296 			case SET:
23297 				enterOuterAlt(_localctx, 1);
23298 				{
23299 				setState(3337);
23300 				match(SET);
23301 				setState(3338);
23302 				match(LP_);
23303 				setState(3339);
23304 				match(LOCK_ESCALATION);
23305 				setState(3340);
23306 				match(EQ_);
23307 				setState(3341);
23308 				_la = _input.LA(1);
23309 				if ( !(_la==TABLE || _la==DISABLE || _la==AUTO) ) {
23310 				_errHandler.recoverInline(this);
23311 				}
23312 				else {
23313 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23314 					_errHandler.reportMatch(this);
23315 					consume();
23316 				}
23317 				setState(3342);
23318 				match(RP_);
23319 				}
23320 				break;
23321 			case MEMORY_OPTIMIZED:
23322 				enterOuterAlt(_localctx, 2);
23323 				{
23324 				setState(3343);
23325 				match(MEMORY_OPTIMIZED);
23326 				setState(3344);
23327 				match(EQ_);
23328 				setState(3345);
23329 				match(ON);
23330 				}
23331 				break;
23332 			case DURABILITY:
23333 				enterOuterAlt(_localctx, 3);
23334 				{
23335 				setState(3346);
23336 				match(DURABILITY);
23337 				setState(3347);
23338 				match(EQ_);
23339 				setState(3348);
23340 				_la = _input.LA(1);
23341 				if ( !(_la==SCHEMA_AND_DATA || _la==SCHEMA_ONLY) ) {
23342 				_errHandler.recoverInline(this);
23343 				}
23344 				else {
23345 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23346 					_errHandler.reportMatch(this);
23347 					consume();
23348 				}
23349 				}
23350 				break;
23351 			case SYSTEM_VERSIONING:
23352 				enterOuterAlt(_localctx, 4);
23353 				{
23354 				setState(3349);
23355 				match(SYSTEM_VERSIONING);
23356 				setState(3350);
23357 				match(EQ_);
23358 				setState(3351);
23359 				match(ON);
23360 				setState(3353);
23361 				_errHandler.sync(this);
23362 				_la = _input.LA(1);
23363 				if (_la==LP_) {
23364 					{
23365 					setState(3352);
23366 					onHistoryTableClause();
23367 					}
23368 				}
23369 
23370 				}
23371 				break;
23372 			default:
23373 				throw new NoViableAltException(this);
23374 			}
23375 		}
23376 		catch (RecognitionException re) {
23377 			_localctx.exception = re;
23378 			_errHandler.reportError(this, re);
23379 			_errHandler.recover(this, re);
23380 		}
23381 		finally {
23382 			exitRule();
23383 		}
23384 		return _localctx;
23385 	}
23386 
23387 	public static class OnHistoryTableClauseContext extends ParserRuleContext {
23388 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23389 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
23390 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
23391 		public TerminalNode EQ_(int i) {
23392 			return getToken(SQLServerStatementParser.EQ_, i);
23393 		}
23394 		public TableNameContext tableName() {
23395 			return getRuleContext(TableNameContext.class,0);
23396 		}
23397 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23398 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
23399 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
23400 		public OnOffOptionContext onOffOption() {
23401 			return getRuleContext(OnOffOptionContext.class,0);
23402 		}
23403 		public OnHistoryTableClauseContext(ParserRuleContext parent, int invokingState) {
23404 			super(parent, invokingState);
23405 		}
23406 		@Override public int getRuleIndex() { return RULE_onHistoryTableClause; }
23407 		@Override
23408 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23409 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnHistoryTableClause(this);
23410 			else return visitor.visitChildren(this);
23411 		}
23412 	}
23413 
23414 	public final OnHistoryTableClauseContext onHistoryTableClause() throws RecognitionException {
23415 		OnHistoryTableClauseContext _localctx = new OnHistoryTableClauseContext(_ctx, getState());
23416 		enterRule(_localctx, 498, RULE_onHistoryTableClause);
23417 		int _la;
23418 		try {
23419 			enterOuterAlt(_localctx, 1);
23420 			{
23421 			setState(3357);
23422 			match(LP_);
23423 			setState(3358);
23424 			match(HISTORY_TABLE);
23425 			setState(3359);
23426 			match(EQ_);
23427 			setState(3360);
23428 			tableName();
23429 			setState(3365);
23430 			_errHandler.sync(this);
23431 			_la = _input.LA(1);
23432 			if (_la==COMMA_) {
23433 				{
23434 				setState(3361);
23435 				match(COMMA_);
23436 				setState(3362);
23437 				match(DATA_CONSISTENCY_CHECK);
23438 				setState(3363);
23439 				match(EQ_);
23440 				setState(3364);
23441 				onOffOption();
23442 				}
23443 			}
23444 
23445 			setState(3367);
23446 			match(RP_);
23447 			}
23448 		}
23449 		catch (RecognitionException re) {
23450 			_localctx.exception = re;
23451 			_errHandler.reportError(this, re);
23452 			_errHandler.recover(this, re);
23453 		}
23454 		finally {
23455 			exitRule();
23456 		}
23457 		return _localctx;
23458 	}
23459 
23460 	public static class CreateDatabaseClauseContext extends ParserRuleContext {
23461 		public TerminalNode CONTAINMENT() { return getToken(SQLServerStatementParser.CONTAINMENT, 0); }
23462 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23463 		public FileDefinitionClauseContext fileDefinitionClause() {
23464 			return getRuleContext(FileDefinitionClauseContext.class,0);
23465 		}
23466 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
23467 		public IgnoredIdentifierContext ignoredIdentifier() {
23468 			return getRuleContext(IgnoredIdentifierContext.class,0);
23469 		}
23470 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
23471 		public List<DatabaseOptionContext> databaseOption() {
23472 			return getRuleContexts(DatabaseOptionContext.class);
23473 		}
23474 		public DatabaseOptionContext databaseOption(int i) {
23475 			return getRuleContext(DatabaseOptionContext.class,i);
23476 		}
23477 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
23478 		public TerminalNode PARTIAL() { return getToken(SQLServerStatementParser.PARTIAL, 0); }
23479 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23480 		public TerminalNode COMMA_(int i) {
23481 			return getToken(SQLServerStatementParser.COMMA_, i);
23482 		}
23483 		public CreateDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
23484 			super(parent, invokingState);
23485 		}
23486 		@Override public int getRuleIndex() { return RULE_createDatabaseClause; }
23487 		@Override
23488 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23489 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDatabaseClause(this);
23490 			else return visitor.visitChildren(this);
23491 		}
23492 	}
23493 
23494 	public final CreateDatabaseClauseContext createDatabaseClause() throws RecognitionException {
23495 		CreateDatabaseClauseContext _localctx = new CreateDatabaseClauseContext(_ctx, getState());
23496 		enterRule(_localctx, 500, RULE_createDatabaseClause);
23497 		int _la;
23498 		try {
23499 			enterOuterAlt(_localctx, 1);
23500 			{
23501 			setState(3372);
23502 			_errHandler.sync(this);
23503 			_la = _input.LA(1);
23504 			if (_la==CONTAINMENT) {
23505 				{
23506 				setState(3369);
23507 				match(CONTAINMENT);
23508 				setState(3370);
23509 				match(EQ_);
23510 				setState(3371);
23511 				_la = _input.LA(1);
23512 				if ( !(_la==NONE || _la==PARTIAL) ) {
23513 				_errHandler.recoverInline(this);
23514 				}
23515 				else {
23516 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23517 					_errHandler.reportMatch(this);
23518 					consume();
23519 				}
23520 				}
23521 			}
23522 
23523 			setState(3375);
23524 			_errHandler.sync(this);
23525 			_la = _input.LA(1);
23526 			if (_la==ON) {
23527 				{
23528 				setState(3374);
23529 				fileDefinitionClause();
23530 				}
23531 			}
23532 
23533 			setState(3379);
23534 			_errHandler.sync(this);
23535 			_la = _input.LA(1);
23536 			if (_la==COLLATE) {
23537 				{
23538 				setState(3377);
23539 				match(COLLATE);
23540 				setState(3378);
23541 				ignoredIdentifier();
23542 				}
23543 			}
23544 
23545 			setState(3390);
23546 			_errHandler.sync(this);
23547 			_la = _input.LA(1);
23548 			if (_la==WITH) {
23549 				{
23550 				setState(3381);
23551 				match(WITH);
23552 				setState(3382);
23553 				databaseOption();
23554 				setState(3387);
23555 				_errHandler.sync(this);
23556 				_la = _input.LA(1);
23557 				while (_la==COMMA_) {
23558 					{
23559 					{
23560 					setState(3383);
23561 					match(COMMA_);
23562 					setState(3384);
23563 					databaseOption();
23564 					}
23565 					}
23566 					setState(3389);
23567 					_errHandler.sync(this);
23568 					_la = _input.LA(1);
23569 				}
23570 				}
23571 			}
23572 
23573 			}
23574 		}
23575 		catch (RecognitionException re) {
23576 			_localctx.exception = re;
23577 			_errHandler.reportError(this, re);
23578 			_errHandler.recover(this, re);
23579 		}
23580 		finally {
23581 			exitRule();
23582 		}
23583 		return _localctx;
23584 	}
23585 
23586 	public static class FileDefinitionClauseContext extends ParserRuleContext {
23587 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23588 		public List<FileSpecContext> fileSpec() {
23589 			return getRuleContexts(FileSpecContext.class);
23590 		}
23591 		public FileSpecContext fileSpec(int i) {
23592 			return getRuleContext(FileSpecContext.class,i);
23593 		}
23594 		public DatabaseLogOnsContext databaseLogOns() {
23595 			return getRuleContext(DatabaseLogOnsContext.class,0);
23596 		}
23597 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
23598 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23599 		public TerminalNode COMMA_(int i) {
23600 			return getToken(SQLServerStatementParser.COMMA_, i);
23601 		}
23602 		public List<DatabaseFileGroupContext> databaseFileGroup() {
23603 			return getRuleContexts(DatabaseFileGroupContext.class);
23604 		}
23605 		public DatabaseFileGroupContext databaseFileGroup(int i) {
23606 			return getRuleContext(DatabaseFileGroupContext.class,i);
23607 		}
23608 		public FileDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
23609 			super(parent, invokingState);
23610 		}
23611 		@Override public int getRuleIndex() { return RULE_fileDefinitionClause; }
23612 		@Override
23613 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23614 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileDefinitionClause(this);
23615 			else return visitor.visitChildren(this);
23616 		}
23617 	}
23618 
23619 	public final FileDefinitionClauseContext fileDefinitionClause() throws RecognitionException {
23620 		FileDefinitionClauseContext _localctx = new FileDefinitionClauseContext(_ctx, getState());
23621 		enterRule(_localctx, 502, RULE_fileDefinitionClause);
23622 		int _la;
23623 		try {
23624 			int _alt;
23625 			enterOuterAlt(_localctx, 1);
23626 			{
23627 			setState(3392);
23628 			match(ON);
23629 			setState(3394);
23630 			_errHandler.sync(this);
23631 			_la = _input.LA(1);
23632 			if (_la==PRIMARY) {
23633 				{
23634 				setState(3393);
23635 				match(PRIMARY);
23636 				}
23637 			}
23638 
23639 			setState(3396);
23640 			fileSpec();
23641 			setState(3401);
23642 			_errHandler.sync(this);
23643 			_alt = getInterpreter().adaptivePredict(_input,322,_ctx);
23644 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
23645 				if ( _alt==1 ) {
23646 					{
23647 					{
23648 					setState(3397);
23649 					match(COMMA_);
23650 					setState(3398);
23651 					fileSpec();
23652 					}
23653 					} 
23654 				}
23655 				setState(3403);
23656 				_errHandler.sync(this);
23657 				_alt = getInterpreter().adaptivePredict(_input,322,_ctx);
23658 			}
23659 			setState(3408);
23660 			_errHandler.sync(this);
23661 			_la = _input.LA(1);
23662 			while (_la==COMMA_) {
23663 				{
23664 				{
23665 				setState(3404);
23666 				match(COMMA_);
23667 				setState(3405);
23668 				databaseFileGroup();
23669 				}
23670 				}
23671 				setState(3410);
23672 				_errHandler.sync(this);
23673 				_la = _input.LA(1);
23674 			}
23675 			setState(3411);
23676 			databaseLogOns();
23677 			}
23678 		}
23679 		catch (RecognitionException re) {
23680 			_localctx.exception = re;
23681 			_errHandler.reportError(this, re);
23682 			_errHandler.recover(this, re);
23683 		}
23684 		finally {
23685 			exitRule();
23686 		}
23687 		return _localctx;
23688 	}
23689 
23690 	public static class DatabaseOptionContext extends ParserRuleContext {
23691 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
23692 		public List<FileStreamOptionContext> fileStreamOption() {
23693 			return getRuleContexts(FileStreamOptionContext.class);
23694 		}
23695 		public FileStreamOptionContext fileStreamOption(int i) {
23696 			return getRuleContext(FileStreamOptionContext.class,i);
23697 		}
23698 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23699 		public TerminalNode COMMA_(int i) {
23700 			return getToken(SQLServerStatementParser.COMMA_, i);
23701 		}
23702 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
23703 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
23704 		public TerminalNode EQ_(int i) {
23705 			return getToken(SQLServerStatementParser.EQ_, i);
23706 		}
23707 		public IgnoredIdentifierContext ignoredIdentifier() {
23708 			return getRuleContext(IgnoredIdentifierContext.class,0);
23709 		}
23710 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
23711 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
23712 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
23713 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23714 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
23715 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
23716 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
23717 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
23718 		public TerminalNode PERSISTENT_LOG_BUFFER() { return getToken(SQLServerStatementParser.PERSISTENT_LOG_BUFFER, 0); }
23719 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
23720 		public DatabaseOptionContext(ParserRuleContext parent, int invokingState) {
23721 			super(parent, invokingState);
23722 		}
23723 		@Override public int getRuleIndex() { return RULE_databaseOption; }
23724 		@Override
23725 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23726 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseOption(this);
23727 			else return visitor.visitChildren(this);
23728 		}
23729 	}
23730 
23731 	public final DatabaseOptionContext databaseOption() throws RecognitionException {
23732 		DatabaseOptionContext _localctx = new DatabaseOptionContext(_ctx, getState());
23733 		enterRule(_localctx, 504, RULE_databaseOption);
23734 		int _la;
23735 		try {
23736 			int _alt;
23737 			setState(3447);
23738 			_errHandler.sync(this);
23739 			switch (_input.LA(1)) {
23740 			case FILESTREAM:
23741 				enterOuterAlt(_localctx, 1);
23742 				{
23743 				setState(3413);
23744 				match(FILESTREAM);
23745 				setState(3414);
23746 				fileStreamOption();
23747 				setState(3419);
23748 				_errHandler.sync(this);
23749 				_alt = getInterpreter().adaptivePredict(_input,324,_ctx);
23750 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
23751 					if ( _alt==1 ) {
23752 						{
23753 						{
23754 						setState(3415);
23755 						match(COMMA_);
23756 						setState(3416);
23757 						fileStreamOption();
23758 						}
23759 						} 
23760 					}
23761 					setState(3421);
23762 					_errHandler.sync(this);
23763 					_alt = getInterpreter().adaptivePredict(_input,324,_ctx);
23764 				}
23765 				}
23766 				break;
23767 			case DEFAULT_FULLTEXT_LANGUAGE:
23768 				enterOuterAlt(_localctx, 2);
23769 				{
23770 				setState(3422);
23771 				match(DEFAULT_FULLTEXT_LANGUAGE);
23772 				setState(3423);
23773 				match(EQ_);
23774 				setState(3424);
23775 				ignoredIdentifier();
23776 				}
23777 				break;
23778 			case DEFAULT_LANGUAGE:
23779 				enterOuterAlt(_localctx, 3);
23780 				{
23781 				setState(3425);
23782 				match(DEFAULT_LANGUAGE);
23783 				setState(3426);
23784 				match(EQ_);
23785 				setState(3427);
23786 				ignoredIdentifier();
23787 				}
23788 				break;
23789 			case NESTED_TRIGGERS:
23790 				enterOuterAlt(_localctx, 4);
23791 				{
23792 				setState(3428);
23793 				match(NESTED_TRIGGERS);
23794 				setState(3429);
23795 				match(EQ_);
23796 				setState(3430);
23797 				_la = _input.LA(1);
23798 				if ( !(_la==ON || _la==OFF) ) {
23799 				_errHandler.recoverInline(this);
23800 				}
23801 				else {
23802 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23803 					_errHandler.reportMatch(this);
23804 					consume();
23805 				}
23806 				}
23807 				break;
23808 			case TRANSFORM_NOISE_WORDS:
23809 				enterOuterAlt(_localctx, 5);
23810 				{
23811 				setState(3431);
23812 				match(TRANSFORM_NOISE_WORDS);
23813 				setState(3432);
23814 				match(EQ_);
23815 				setState(3433);
23816 				_la = _input.LA(1);
23817 				if ( !(_la==ON || _la==OFF) ) {
23818 				_errHandler.recoverInline(this);
23819 				}
23820 				else {
23821 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23822 					_errHandler.reportMatch(this);
23823 					consume();
23824 				}
23825 				}
23826 				break;
23827 			case TWO_DIGIT_YEAR_CUTOFF:
23828 				enterOuterAlt(_localctx, 6);
23829 				{
23830 				setState(3434);
23831 				match(TWO_DIGIT_YEAR_CUTOFF);
23832 				setState(3435);
23833 				match(EQ_);
23834 				setState(3436);
23835 				ignoredIdentifier();
23836 				}
23837 				break;
23838 			case DB_CHAINING:
23839 				enterOuterAlt(_localctx, 7);
23840 				{
23841 				setState(3437);
23842 				match(DB_CHAINING);
23843 				setState(3438);
23844 				_la = _input.LA(1);
23845 				if ( !(_la==ON || _la==OFF) ) {
23846 				_errHandler.recoverInline(this);
23847 				}
23848 				else {
23849 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23850 					_errHandler.reportMatch(this);
23851 					consume();
23852 				}
23853 				}
23854 				break;
23855 			case TRUSTWORTHY:
23856 				enterOuterAlt(_localctx, 8);
23857 				{
23858 				setState(3439);
23859 				match(TRUSTWORTHY);
23860 				setState(3440);
23861 				_la = _input.LA(1);
23862 				if ( !(_la==ON || _la==OFF) ) {
23863 				_errHandler.recoverInline(this);
23864 				}
23865 				else {
23866 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23867 					_errHandler.reportMatch(this);
23868 					consume();
23869 				}
23870 				}
23871 				break;
23872 			case PERSISTENT_LOG_BUFFER:
23873 				enterOuterAlt(_localctx, 9);
23874 				{
23875 				setState(3441);
23876 				match(PERSISTENT_LOG_BUFFER);
23877 				setState(3442);
23878 				match(EQ_);
23879 				setState(3443);
23880 				match(ON);
23881 				{
23882 				setState(3444);
23883 				match(DIRECTORY_NAME);
23884 				setState(3445);
23885 				match(EQ_);
23886 				setState(3446);
23887 				ignoredIdentifier();
23888 				}
23889 				}
23890 				break;
23891 			default:
23892 				throw new NoViableAltException(this);
23893 			}
23894 		}
23895 		catch (RecognitionException re) {
23896 			_localctx.exception = re;
23897 			_errHandler.reportError(this, re);
23898 			_errHandler.recover(this, re);
23899 		}
23900 		finally {
23901 			exitRule();
23902 		}
23903 		return _localctx;
23904 	}
23905 
23906 	public static class FileStreamOptionContext extends ParserRuleContext {
23907 		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(SQLServerStatementParser.NON_TRANSACTED_ACCESS, 0); }
23908 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23909 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
23910 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
23911 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
23912 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
23913 		public IgnoredIdentifierContext ignoredIdentifier() {
23914 			return getRuleContext(IgnoredIdentifierContext.class,0);
23915 		}
23916 		public FileStreamOptionContext(ParserRuleContext parent, int invokingState) {
23917 			super(parent, invokingState);
23918 		}
23919 		@Override public int getRuleIndex() { return RULE_fileStreamOption; }
23920 		@Override
23921 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23922 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileStreamOption(this);
23923 			else return visitor.visitChildren(this);
23924 		}
23925 	}
23926 
23927 	public final FileStreamOptionContext fileStreamOption() throws RecognitionException {
23928 		FileStreamOptionContext _localctx = new FileStreamOptionContext(_ctx, getState());
23929 		enterRule(_localctx, 506, RULE_fileStreamOption);
23930 		int _la;
23931 		try {
23932 			setState(3455);
23933 			_errHandler.sync(this);
23934 			switch (_input.LA(1)) {
23935 			case NON_TRANSACTED_ACCESS:
23936 				enterOuterAlt(_localctx, 1);
23937 				{
23938 				setState(3449);
23939 				match(NON_TRANSACTED_ACCESS);
23940 				setState(3450);
23941 				match(EQ_);
23942 				setState(3451);
23943 				_la = _input.LA(1);
23944 				if ( !(_la==FULL || _la==OFF || _la==READ_ONLY) ) {
23945 				_errHandler.recoverInline(this);
23946 				}
23947 				else {
23948 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23949 					_errHandler.reportMatch(this);
23950 					consume();
23951 				}
23952 				}
23953 				break;
23954 			case DIRECTORY_NAME:
23955 				enterOuterAlt(_localctx, 2);
23956 				{
23957 				setState(3452);
23958 				match(DIRECTORY_NAME);
23959 				setState(3453);
23960 				match(EQ_);
23961 				setState(3454);
23962 				ignoredIdentifier();
23963 				}
23964 				break;
23965 			default:
23966 				throw new NoViableAltException(this);
23967 			}
23968 		}
23969 		catch (RecognitionException re) {
23970 			_localctx.exception = re;
23971 			_errHandler.reportError(this, re);
23972 			_errHandler.recover(this, re);
23973 		}
23974 		finally {
23975 			exitRule();
23976 		}
23977 		return _localctx;
23978 	}
23979 
23980 	public static class FileSpecContext extends ParserRuleContext {
23981 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23982 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
23983 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
23984 		public TerminalNode EQ_(int i) {
23985 			return getToken(SQLServerStatementParser.EQ_, i);
23986 		}
23987 		public IgnoredIdentifierContext ignoredIdentifier() {
23988 			return getRuleContext(IgnoredIdentifierContext.class,0);
23989 		}
23990 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
23991 		public TerminalNode FILENAME() { return getToken(SQLServerStatementParser.FILENAME, 0); }
23992 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
23993 		public DatabaseFileSpecOptionContext databaseFileSpecOption() {
23994 			return getRuleContext(DatabaseFileSpecOptionContext.class,0);
23995 		}
23996 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23997 		public FileSpecContext(ParserRuleContext parent, int invokingState) {
23998 			super(parent, invokingState);
23999 		}
24000 		@Override public int getRuleIndex() { return RULE_fileSpec; }
24001 		@Override
24002 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24003 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileSpec(this);
24004 			else return visitor.visitChildren(this);
24005 		}
24006 	}
24007 
24008 	public final FileSpecContext fileSpec() throws RecognitionException {
24009 		FileSpecContext _localctx = new FileSpecContext(_ctx, getState());
24010 		enterRule(_localctx, 508, RULE_fileSpec);
24011 		try {
24012 			enterOuterAlt(_localctx, 1);
24013 			{
24014 			setState(3457);
24015 			match(LP_);
24016 			setState(3458);
24017 			match(NAME);
24018 			setState(3459);
24019 			match(EQ_);
24020 			setState(3460);
24021 			ignoredIdentifier();
24022 			setState(3461);
24023 			match(COMMA_);
24024 			setState(3462);
24025 			match(FILENAME);
24026 			setState(3463);
24027 			match(EQ_);
24028 			setState(3464);
24029 			match(STRING_);
24030 			setState(3465);
24031 			databaseFileSpecOption();
24032 			setState(3466);
24033 			match(RP_);
24034 			}
24035 		}
24036 		catch (RecognitionException re) {
24037 			_localctx.exception = re;
24038 			_errHandler.reportError(this, re);
24039 			_errHandler.recover(this, re);
24040 		}
24041 		finally {
24042 			exitRule();
24043 		}
24044 		return _localctx;
24045 	}
24046 
24047 	public static class DatabaseFileSpecOptionContext extends ParserRuleContext {
24048 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24049 		public TerminalNode COMMA_(int i) {
24050 			return getToken(SQLServerStatementParser.COMMA_, i);
24051 		}
24052 		public TerminalNode SIZE() { return getToken(SQLServerStatementParser.SIZE, 0); }
24053 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
24054 		public TerminalNode EQ_(int i) {
24055 			return getToken(SQLServerStatementParser.EQ_, i);
24056 		}
24057 		public List<NumberLiteralsContext> numberLiterals() {
24058 			return getRuleContexts(NumberLiteralsContext.class);
24059 		}
24060 		public NumberLiteralsContext numberLiterals(int i) {
24061 			return getRuleContext(NumberLiteralsContext.class,i);
24062 		}
24063 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
24064 		public TerminalNode FILEGROWTH() { return getToken(SQLServerStatementParser.FILEGROWTH, 0); }
24065 		public TerminalNode UNLIMITED() { return getToken(SQLServerStatementParser.UNLIMITED, 0); }
24066 		public List<TerminalNode> KB() { return getTokens(SQLServerStatementParser.KB); }
24067 		public TerminalNode KB(int i) {
24068 			return getToken(SQLServerStatementParser.KB, i);
24069 		}
24070 		public List<TerminalNode> MB() { return getTokens(SQLServerStatementParser.MB); }
24071 		public TerminalNode MB(int i) {
24072 			return getToken(SQLServerStatementParser.MB, i);
24073 		}
24074 		public List<TerminalNode> GB() { return getTokens(SQLServerStatementParser.GB); }
24075 		public TerminalNode GB(int i) {
24076 			return getToken(SQLServerStatementParser.GB, i);
24077 		}
24078 		public List<TerminalNode> TB() { return getTokens(SQLServerStatementParser.TB); }
24079 		public TerminalNode TB(int i) {
24080 			return getToken(SQLServerStatementParser.TB, i);
24081 		}
24082 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
24083 		public DatabaseFileSpecOptionContext(ParserRuleContext parent, int invokingState) {
24084 			super(parent, invokingState);
24085 		}
24086 		@Override public int getRuleIndex() { return RULE_databaseFileSpecOption; }
24087 		@Override
24088 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24089 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileSpecOption(this);
24090 			else return visitor.visitChildren(this);
24091 		}
24092 	}
24093 
24094 	public final DatabaseFileSpecOptionContext databaseFileSpecOption() throws RecognitionException {
24095 		DatabaseFileSpecOptionContext _localctx = new DatabaseFileSpecOptionContext(_ctx, getState());
24096 		enterRule(_localctx, 510, RULE_databaseFileSpecOption);
24097 		int _la;
24098 		try {
24099 			enterOuterAlt(_localctx, 1);
24100 			{
24101 			setState(3475);
24102 			_errHandler.sync(this);
24103 			switch ( getInterpreter().adaptivePredict(_input,328,_ctx) ) {
24104 			case 1:
24105 				{
24106 				setState(3468);
24107 				match(COMMA_);
24108 				setState(3469);
24109 				match(SIZE);
24110 				setState(3470);
24111 				match(EQ_);
24112 				setState(3471);
24113 				numberLiterals();
24114 				setState(3473);
24115 				_errHandler.sync(this);
24116 				_la = _input.LA(1);
24117 				if (((((_la - 502)) & ~0x3f) == 0 && ((1L << (_la - 502)) & ((1L << (KB - 502)) | (1L << (MB - 502)) | (1L << (GB - 502)) | (1L << (TB - 502)))) != 0)) {
24118 					{
24119 					setState(3472);
24120 					_la = _input.LA(1);
24121 					if ( !(((((_la - 502)) & ~0x3f) == 0 && ((1L << (_la - 502)) & ((1L << (KB - 502)) | (1L << (MB - 502)) | (1L << (GB - 502)) | (1L << (TB - 502)))) != 0)) ) {
24122 					_errHandler.recoverInline(this);
24123 					}
24124 					else {
24125 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24126 						_errHandler.reportMatch(this);
24127 						consume();
24128 					}
24129 					}
24130 				}
24131 
24132 				}
24133 				break;
24134 			}
24135 			setState(3487);
24136 			_errHandler.sync(this);
24137 			switch ( getInterpreter().adaptivePredict(_input,331,_ctx) ) {
24138 			case 1:
24139 				{
24140 				setState(3477);
24141 				match(COMMA_);
24142 				setState(3478);
24143 				match(MAXSIZE);
24144 				setState(3479);
24145 				match(EQ_);
24146 				setState(3485);
24147 				_errHandler.sync(this);
24148 				switch (_input.LA(1)) {
24149 				case PLUS_:
24150 				case MINUS_:
24151 				case NUMBER_:
24152 					{
24153 					setState(3480);
24154 					numberLiterals();
24155 					setState(3482);
24156 					_errHandler.sync(this);
24157 					_la = _input.LA(1);
24158 					if (((((_la - 502)) & ~0x3f) == 0 && ((1L << (_la - 502)) & ((1L << (KB - 502)) | (1L << (MB - 502)) | (1L << (GB - 502)) | (1L << (TB - 502)))) != 0)) {
24159 						{
24160 						setState(3481);
24161 						_la = _input.LA(1);
24162 						if ( !(((((_la - 502)) & ~0x3f) == 0 && ((1L << (_la - 502)) & ((1L << (KB - 502)) | (1L << (MB - 502)) | (1L << (GB - 502)) | (1L << (TB - 502)))) != 0)) ) {
24163 						_errHandler.recoverInline(this);
24164 						}
24165 						else {
24166 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24167 							_errHandler.reportMatch(this);
24168 							consume();
24169 						}
24170 						}
24171 					}
24172 
24173 					}
24174 					break;
24175 				case UNLIMITED:
24176 					{
24177 					setState(3484);
24178 					match(UNLIMITED);
24179 					}
24180 					break;
24181 				default:
24182 					throw new NoViableAltException(this);
24183 				}
24184 				}
24185 				break;
24186 			}
24187 			setState(3496);
24188 			_errHandler.sync(this);
24189 			_la = _input.LA(1);
24190 			if (_la==COMMA_) {
24191 				{
24192 				setState(3489);
24193 				match(COMMA_);
24194 				setState(3490);
24195 				match(FILEGROWTH);
24196 				setState(3491);
24197 				match(EQ_);
24198 				setState(3492);
24199 				numberLiterals();
24200 				setState(3494);
24201 				_errHandler.sync(this);
24202 				_la = _input.LA(1);
24203 				if (_la==MOD_ || ((((_la - 502)) & ~0x3f) == 0 && ((1L << (_la - 502)) & ((1L << (KB - 502)) | (1L << (MB - 502)) | (1L << (GB - 502)) | (1L << (TB - 502)))) != 0)) {
24204 					{
24205 					setState(3493);
24206 					_la = _input.LA(1);
24207 					if ( !(_la==MOD_ || ((((_la - 502)) & ~0x3f) == 0 && ((1L << (_la - 502)) & ((1L << (KB - 502)) | (1L << (MB - 502)) | (1L << (GB - 502)) | (1L << (TB - 502)))) != 0)) ) {
24208 					_errHandler.recoverInline(this);
24209 					}
24210 					else {
24211 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24212 						_errHandler.reportMatch(this);
24213 						consume();
24214 					}
24215 					}
24216 				}
24217 
24218 				}
24219 			}
24220 
24221 			}
24222 		}
24223 		catch (RecognitionException re) {
24224 			_localctx.exception = re;
24225 			_errHandler.reportError(this, re);
24226 			_errHandler.recover(this, re);
24227 		}
24228 		finally {
24229 			exitRule();
24230 		}
24231 		return _localctx;
24232 	}
24233 
24234 	public static class DatabaseFileGroupContext extends ParserRuleContext {
24235 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
24236 		public IgnoredIdentifierContext ignoredIdentifier() {
24237 			return getRuleContext(IgnoredIdentifierContext.class,0);
24238 		}
24239 		public List<FileSpecContext> fileSpec() {
24240 			return getRuleContexts(FileSpecContext.class);
24241 		}
24242 		public FileSpecContext fileSpec(int i) {
24243 			return getRuleContext(FileSpecContext.class,i);
24244 		}
24245 		public DatabaseFileGroupContainsContext databaseFileGroupContains() {
24246 			return getRuleContext(DatabaseFileGroupContainsContext.class,0);
24247 		}
24248 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24249 		public TerminalNode COMMA_(int i) {
24250 			return getToken(SQLServerStatementParser.COMMA_, i);
24251 		}
24252 		public DatabaseFileGroupContext(ParserRuleContext parent, int invokingState) {
24253 			super(parent, invokingState);
24254 		}
24255 		@Override public int getRuleIndex() { return RULE_databaseFileGroup; }
24256 		@Override
24257 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24258 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileGroup(this);
24259 			else return visitor.visitChildren(this);
24260 		}
24261 	}
24262 
24263 	public final DatabaseFileGroupContext databaseFileGroup() throws RecognitionException {
24264 		DatabaseFileGroupContext _localctx = new DatabaseFileGroupContext(_ctx, getState());
24265 		enterRule(_localctx, 512, RULE_databaseFileGroup);
24266 		try {
24267 			int _alt;
24268 			enterOuterAlt(_localctx, 1);
24269 			{
24270 			setState(3498);
24271 			match(FILEGROUP);
24272 			setState(3499);
24273 			ignoredIdentifier();
24274 			setState(3501);
24275 			_errHandler.sync(this);
24276 			switch ( getInterpreter().adaptivePredict(_input,334,_ctx) ) {
24277 			case 1:
24278 				{
24279 				setState(3500);
24280 				databaseFileGroupContains();
24281 				}
24282 				break;
24283 			}
24284 			setState(3503);
24285 			fileSpec();
24286 			setState(3508);
24287 			_errHandler.sync(this);
24288 			_alt = getInterpreter().adaptivePredict(_input,335,_ctx);
24289 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
24290 				if ( _alt==1 ) {
24291 					{
24292 					{
24293 					setState(3504);
24294 					match(COMMA_);
24295 					setState(3505);
24296 					fileSpec();
24297 					}
24298 					} 
24299 				}
24300 				setState(3510);
24301 				_errHandler.sync(this);
24302 				_alt = getInterpreter().adaptivePredict(_input,335,_ctx);
24303 			}
24304 			}
24305 		}
24306 		catch (RecognitionException re) {
24307 			_localctx.exception = re;
24308 			_errHandler.reportError(this, re);
24309 			_errHandler.recover(this, re);
24310 		}
24311 		finally {
24312 			exitRule();
24313 		}
24314 		return _localctx;
24315 	}
24316 
24317 	public static class DatabaseFileGroupContainsContext extends ParserRuleContext {
24318 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
24319 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
24320 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
24321 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
24322 		public DatabaseFileGroupContainsContext(ParserRuleContext parent, int invokingState) {
24323 			super(parent, invokingState);
24324 		}
24325 		@Override public int getRuleIndex() { return RULE_databaseFileGroupContains; }
24326 		@Override
24327 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24328 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileGroupContains(this);
24329 			else return visitor.visitChildren(this);
24330 		}
24331 	}
24332 
24333 	public final DatabaseFileGroupContainsContext databaseFileGroupContains() throws RecognitionException {
24334 		DatabaseFileGroupContainsContext _localctx = new DatabaseFileGroupContainsContext(_ctx, getState());
24335 		enterRule(_localctx, 514, RULE_databaseFileGroupContains);
24336 		int _la;
24337 		try {
24338 			setState(3520);
24339 			_errHandler.sync(this);
24340 			switch ( getInterpreter().adaptivePredict(_input,338,_ctx) ) {
24341 			case 1:
24342 				enterOuterAlt(_localctx, 1);
24343 				{
24344 				setState(3513);
24345 				_errHandler.sync(this);
24346 				_la = _input.LA(1);
24347 				if (_la==CONTAINS) {
24348 					{
24349 					setState(3511);
24350 					match(CONTAINS);
24351 					setState(3512);
24352 					match(FILESTREAM);
24353 					}
24354 				}
24355 
24356 				setState(3516);
24357 				_errHandler.sync(this);
24358 				_la = _input.LA(1);
24359 				if (_la==DEFAULT) {
24360 					{
24361 					setState(3515);
24362 					match(DEFAULT);
24363 					}
24364 				}
24365 
24366 				}
24367 				break;
24368 			case 2:
24369 				enterOuterAlt(_localctx, 2);
24370 				{
24371 				setState(3518);
24372 				match(CONTAINS);
24373 				setState(3519);
24374 				match(MEMORY_OPTIMIZED_DATA);
24375 				}
24376 				break;
24377 			}
24378 		}
24379 		catch (RecognitionException re) {
24380 			_localctx.exception = re;
24381 			_errHandler.reportError(this, re);
24382 			_errHandler.recover(this, re);
24383 		}
24384 		finally {
24385 			exitRule();
24386 		}
24387 		return _localctx;
24388 	}
24389 
24390 	public static class DatabaseLogOnsContext extends ParserRuleContext {
24391 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
24392 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
24393 		public List<FileSpecContext> fileSpec() {
24394 			return getRuleContexts(FileSpecContext.class);
24395 		}
24396 		public FileSpecContext fileSpec(int i) {
24397 			return getRuleContext(FileSpecContext.class,i);
24398 		}
24399 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24400 		public TerminalNode COMMA_(int i) {
24401 			return getToken(SQLServerStatementParser.COMMA_, i);
24402 		}
24403 		public DatabaseLogOnsContext(ParserRuleContext parent, int invokingState) {
24404 			super(parent, invokingState);
24405 		}
24406 		@Override public int getRuleIndex() { return RULE_databaseLogOns; }
24407 		@Override
24408 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24409 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseLogOns(this);
24410 			else return visitor.visitChildren(this);
24411 		}
24412 	}
24413 
24414 	public final DatabaseLogOnsContext databaseLogOns() throws RecognitionException {
24415 		DatabaseLogOnsContext _localctx = new DatabaseLogOnsContext(_ctx, getState());
24416 		enterRule(_localctx, 516, RULE_databaseLogOns);
24417 		int _la;
24418 		try {
24419 			enterOuterAlt(_localctx, 1);
24420 			{
24421 			setState(3532);
24422 			_errHandler.sync(this);
24423 			_la = _input.LA(1);
24424 			if (_la==LOG) {
24425 				{
24426 				setState(3522);
24427 				match(LOG);
24428 				setState(3523);
24429 				match(ON);
24430 				setState(3524);
24431 				fileSpec();
24432 				setState(3529);
24433 				_errHandler.sync(this);
24434 				_la = _input.LA(1);
24435 				while (_la==COMMA_) {
24436 					{
24437 					{
24438 					setState(3525);
24439 					match(COMMA_);
24440 					setState(3526);
24441 					fileSpec();
24442 					}
24443 					}
24444 					setState(3531);
24445 					_errHandler.sync(this);
24446 					_la = _input.LA(1);
24447 				}
24448 				}
24449 			}
24450 
24451 			}
24452 		}
24453 		catch (RecognitionException re) {
24454 			_localctx.exception = re;
24455 			_errHandler.reportError(this, re);
24456 			_errHandler.recover(this, re);
24457 		}
24458 		finally {
24459 			exitRule();
24460 		}
24461 		return _localctx;
24462 	}
24463 
24464 	public static class DeclareVariableContext extends ParserRuleContext {
24465 		public TerminalNode DECLARE() { return getToken(SQLServerStatementParser.DECLARE, 0); }
24466 		public List<VariableContext> variable() {
24467 			return getRuleContexts(VariableContext.class);
24468 		}
24469 		public VariableContext variable(int i) {
24470 			return getRuleContext(VariableContext.class,i);
24471 		}
24472 		public TableVariableContext tableVariable() {
24473 			return getRuleContext(TableVariableContext.class,0);
24474 		}
24475 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24476 		public TerminalNode COMMA_(int i) {
24477 			return getToken(SQLServerStatementParser.COMMA_, i);
24478 		}
24479 		public DeclareVariableContext(ParserRuleContext parent, int invokingState) {
24480 			super(parent, invokingState);
24481 		}
24482 		@Override public int getRuleIndex() { return RULE_declareVariable; }
24483 		@Override
24484 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24485 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDeclareVariable(this);
24486 			else return visitor.visitChildren(this);
24487 		}
24488 	}
24489 
24490 	public final DeclareVariableContext declareVariable() throws RecognitionException {
24491 		DeclareVariableContext _localctx = new DeclareVariableContext(_ctx, getState());
24492 		enterRule(_localctx, 518, RULE_declareVariable);
24493 		int _la;
24494 		try {
24495 			enterOuterAlt(_localctx, 1);
24496 			{
24497 			setState(3534);
24498 			match(DECLARE);
24499 			setState(3544);
24500 			_errHandler.sync(this);
24501 			switch ( getInterpreter().adaptivePredict(_input,342,_ctx) ) {
24502 			case 1:
24503 				{
24504 				setState(3535);
24505 				variable();
24506 				setState(3540);
24507 				_errHandler.sync(this);
24508 				_la = _input.LA(1);
24509 				while (_la==COMMA_) {
24510 					{
24511 					{
24512 					setState(3536);
24513 					match(COMMA_);
24514 					setState(3537);
24515 					variable();
24516 					}
24517 					}
24518 					setState(3542);
24519 					_errHandler.sync(this);
24520 					_la = _input.LA(1);
24521 				}
24522 				}
24523 				break;
24524 			case 2:
24525 				{
24526 				setState(3543);
24527 				tableVariable();
24528 				}
24529 				break;
24530 			}
24531 			}
24532 		}
24533 		catch (RecognitionException re) {
24534 			_localctx.exception = re;
24535 			_errHandler.reportError(this, re);
24536 			_errHandler.recover(this, re);
24537 		}
24538 		finally {
24539 			exitRule();
24540 		}
24541 		return _localctx;
24542 	}
24543 
24544 	public static class VariableContext extends ParserRuleContext {
24545 		public VariableNameContext variableName() {
24546 			return getRuleContext(VariableNameContext.class,0);
24547 		}
24548 		public DataTypeContext dataType() {
24549 			return getRuleContext(DataTypeContext.class,0);
24550 		}
24551 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
24552 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
24553 		public SimpleExprContext simpleExpr() {
24554 			return getRuleContext(SimpleExprContext.class,0);
24555 		}
24556 		public TerminalNode CURSOR() { return getToken(SQLServerStatementParser.CURSOR, 0); }
24557 		public VariableContext(ParserRuleContext parent, int invokingState) {
24558 			super(parent, invokingState);
24559 		}
24560 		@Override public int getRuleIndex() { return RULE_variable; }
24561 		@Override
24562 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24563 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariable(this);
24564 			else return visitor.visitChildren(this);
24565 		}
24566 	}
24567 
24568 	public final VariableContext variable() throws RecognitionException {
24569 		VariableContext _localctx = new VariableContext(_ctx, getState());
24570 		enterRule(_localctx, 520, RULE_variable);
24571 		int _la;
24572 		try {
24573 			setState(3558);
24574 			_errHandler.sync(this);
24575 			switch ( getInterpreter().adaptivePredict(_input,345,_ctx) ) {
24576 			case 1:
24577 				enterOuterAlt(_localctx, 1);
24578 				{
24579 				setState(3546);
24580 				variableName();
24581 				setState(3548);
24582 				_errHandler.sync(this);
24583 				_la = _input.LA(1);
24584 				if (_la==AS) {
24585 					{
24586 					setState(3547);
24587 					match(AS);
24588 					}
24589 				}
24590 
24591 				setState(3550);
24592 				dataType();
24593 				setState(3553);
24594 				_errHandler.sync(this);
24595 				switch ( getInterpreter().adaptivePredict(_input,344,_ctx) ) {
24596 				case 1:
24597 					{
24598 					setState(3551);
24599 					match(EQ_);
24600 					setState(3552);
24601 					simpleExpr(0);
24602 					}
24603 					break;
24604 				}
24605 				}
24606 				break;
24607 			case 2:
24608 				enterOuterAlt(_localctx, 2);
24609 				{
24610 				setState(3555);
24611 				variableName();
24612 				setState(3556);
24613 				match(CURSOR);
24614 				}
24615 				break;
24616 			}
24617 		}
24618 		catch (RecognitionException re) {
24619 			_localctx.exception = re;
24620 			_errHandler.reportError(this, re);
24621 			_errHandler.recover(this, re);
24622 		}
24623 		finally {
24624 			exitRule();
24625 		}
24626 		return _localctx;
24627 	}
24628 
24629 	public static class TableVariableContext extends ParserRuleContext {
24630 		public VariableNameContext variableName() {
24631 			return getRuleContext(VariableNameContext.class,0);
24632 		}
24633 		public VariTableTypeDefinitionContext variTableTypeDefinition() {
24634 			return getRuleContext(VariTableTypeDefinitionContext.class,0);
24635 		}
24636 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
24637 		public TableVariableContext(ParserRuleContext parent, int invokingState) {
24638 			super(parent, invokingState);
24639 		}
24640 		@Override public int getRuleIndex() { return RULE_tableVariable; }
24641 		@Override
24642 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24643 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableVariable(this);
24644 			else return visitor.visitChildren(this);
24645 		}
24646 	}
24647 
24648 	public final TableVariableContext tableVariable() throws RecognitionException {
24649 		TableVariableContext _localctx = new TableVariableContext(_ctx, getState());
24650 		enterRule(_localctx, 522, RULE_tableVariable);
24651 		int _la;
24652 		try {
24653 			enterOuterAlt(_localctx, 1);
24654 			{
24655 			setState(3560);
24656 			variableName();
24657 			setState(3562);
24658 			_errHandler.sync(this);
24659 			_la = _input.LA(1);
24660 			if (_la==AS) {
24661 				{
24662 				setState(3561);
24663 				match(AS);
24664 				}
24665 			}
24666 
24667 			setState(3564);
24668 			variTableTypeDefinition();
24669 			}
24670 		}
24671 		catch (RecognitionException re) {
24672 			_localctx.exception = re;
24673 			_errHandler.reportError(this, re);
24674 			_errHandler.recover(this, re);
24675 		}
24676 		finally {
24677 			exitRule();
24678 		}
24679 		return _localctx;
24680 	}
24681 
24682 	public static class VariTableTypeDefinitionContext extends ParserRuleContext {
24683 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
24684 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24685 		public List<TableVariableClauseContext> tableVariableClause() {
24686 			return getRuleContexts(TableVariableClauseContext.class);
24687 		}
24688 		public TableVariableClauseContext tableVariableClause(int i) {
24689 			return getRuleContext(TableVariableClauseContext.class,i);
24690 		}
24691 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24692 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24693 		public TerminalNode COMMA_(int i) {
24694 			return getToken(SQLServerStatementParser.COMMA_, i);
24695 		}
24696 		public VariTableTypeDefinitionContext(ParserRuleContext parent, int invokingState) {
24697 			super(parent, invokingState);
24698 		}
24699 		@Override public int getRuleIndex() { return RULE_variTableTypeDefinition; }
24700 		@Override
24701 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24702 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariTableTypeDefinition(this);
24703 			else return visitor.visitChildren(this);
24704 		}
24705 	}
24706 
24707 	public final VariTableTypeDefinitionContext variTableTypeDefinition() throws RecognitionException {
24708 		VariTableTypeDefinitionContext _localctx = new VariTableTypeDefinitionContext(_ctx, getState());
24709 		enterRule(_localctx, 524, RULE_variTableTypeDefinition);
24710 		int _la;
24711 		try {
24712 			enterOuterAlt(_localctx, 1);
24713 			{
24714 			setState(3566);
24715 			match(TABLE);
24716 			setState(3567);
24717 			match(LP_);
24718 			setState(3568);
24719 			tableVariableClause();
24720 			setState(3573);
24721 			_errHandler.sync(this);
24722 			_la = _input.LA(1);
24723 			while (_la==COMMA_) {
24724 				{
24725 				{
24726 				setState(3569);
24727 				match(COMMA_);
24728 				setState(3570);
24729 				tableVariableClause();
24730 				}
24731 				}
24732 				setState(3575);
24733 				_errHandler.sync(this);
24734 				_la = _input.LA(1);
24735 			}
24736 			setState(3576);
24737 			match(RP_);
24738 			}
24739 		}
24740 		catch (RecognitionException re) {
24741 			_localctx.exception = re;
24742 			_errHandler.reportError(this, re);
24743 			_errHandler.recover(this, re);
24744 		}
24745 		finally {
24746 			exitRule();
24747 		}
24748 		return _localctx;
24749 	}
24750 
24751 	public static class TableVariableClauseContext extends ParserRuleContext {
24752 		public VariableTableColumnDefinitionContext variableTableColumnDefinition() {
24753 			return getRuleContext(VariableTableColumnDefinitionContext.class,0);
24754 		}
24755 		public VariableTableConstraintContext variableTableConstraint() {
24756 			return getRuleContext(VariableTableConstraintContext.class,0);
24757 		}
24758 		public TableVariableClauseContext(ParserRuleContext parent, int invokingState) {
24759 			super(parent, invokingState);
24760 		}
24761 		@Override public int getRuleIndex() { return RULE_tableVariableClause; }
24762 		@Override
24763 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24764 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableVariableClause(this);
24765 			else return visitor.visitChildren(this);
24766 		}
24767 	}
24768 
24769 	public final TableVariableClauseContext tableVariableClause() throws RecognitionException {
24770 		TableVariableClauseContext _localctx = new TableVariableClauseContext(_ctx, getState());
24771 		enterRule(_localctx, 526, RULE_tableVariableClause);
24772 		try {
24773 			setState(3580);
24774 			_errHandler.sync(this);
24775 			switch (_input.LA(1)) {
24776 			case DOLLAR_:
24777 			case TRUNCATE:
24778 			case SCHEMA:
24779 			case COLUMNS:
24780 			case PRECISION:
24781 			case FUNCTION:
24782 			case TRIGGER:
24783 			case CAST:
24784 			case SUBSTRING:
24785 			case OFF:
24786 			case GROUP:
24787 			case LIMIT:
24788 			case OFFSET:
24789 			case SAVEPOINT:
24790 			case BOOLEAN:
24791 			case ARRAY:
24792 			case DATE:
24793 			case LOCALTIME:
24794 			case LOCALTIMESTAMP:
24795 			case QUARTER:
24796 			case MONTH:
24797 			case WEEK:
24798 			case DAY:
24799 			case SECOND:
24800 			case MICROSECOND:
24801 			case MAX:
24802 			case MIN:
24803 			case SUM:
24804 			case COUNT:
24805 			case AVG:
24806 			case ENABLE:
24807 			case DISABLE:
24808 			case INSTANCE:
24809 			case DO:
24810 			case DEFINER:
24811 			case SQL:
24812 			case CASCADED:
24813 			case LOCAL:
24814 			case NEXT:
24815 			case NAME:
24816 			case INTEGER:
24817 			case TYPE:
24818 			case TEXT:
24819 			case VIEWS:
24820 			case READ_ONLY:
24821 			case DATABASE:
24822 			case RETURNS:
24823 			case DATEPART:
24824 			case PASSWORD:
24825 			case BINARY:
24826 			case HIDDEN_:
24827 			case MOD:
24828 			case PARTITION:
24829 			case PARTITIONS:
24830 			case TOP:
24831 			case ROW:
24832 			case ROWS:
24833 			case XOR:
24834 			case ALWAYS:
24835 			case ROLE:
24836 			case START:
24837 			case ALGORITHM:
24838 			case AUTO:
24839 			case BLOCKERS:
24840 			case CLUSTERED:
24841 			case NONCLUSTERED:
24842 			case COLUMNSTORE:
24843 			case CONTENT:
24844 			case YEARS:
24845 			case MONTHS:
24846 			case WEEKS:
24847 			case DAYS:
24848 			case MINUTES:
24849 			case DENY:
24850 			case DETERMINISTIC:
24851 			case DISTRIBUTION:
24852 			case DOCUMENT:
24853 			case DURABILITY:
24854 			case ENCRYPTED:
24855 			case FILESTREAM:
24856 			case FILETABLE:
24857 			case FILLFACTOR:
24858 			case FOLLOWING:
24859 			case HASH:
24860 			case HEAP:
24861 			case INBOUND:
24862 			case OUTBOUND:
24863 			case UNBOUNDED:
24864 			case INFINITE:
24865 			case LOGIN:
24866 			case MASKED:
24867 			case MAXDOP:
24868 			case MOVE:
24869 			case NOCHECK:
24870 			case OBJECT:
24871 			case ONLINE:
24872 			case OVER:
24873 			case PAGE:
24874 			case PAUSED:
24875 			case PERIOD:
24876 			case PERSISTED:
24877 			case PRECEDING:
24878 			case RANDOMIZED:
24879 			case RANGE:
24880 			case REBUILD:
24881 			case REPLICATE:
24882 			case REPLICATION:
24883 			case RESUMABLE:
24884 			case ROWGUIDCOL:
24885 			case SAVE:
24886 			case SELF:
24887 			case SPARSE:
24888 			case SWITCH:
24889 			case TRAN:
24890 			case TRANCOUNT:
24891 			case CONTROL:
24892 			case CONCAT:
24893 			case TAKE:
24894 			case OWNERSHIP:
24895 			case DEFINITION:
24896 			case APPLICATION:
24897 			case ASSEMBLY:
24898 			case SYMMETRIC:
24899 			case ASYMMETRIC:
24900 			case SERVER:
24901 			case RECEIVE:
24902 			case CHANGE:
24903 			case TRACE:
24904 			case TRACKING:
24905 			case RESOURCES:
24906 			case SETTINGS:
24907 			case STATE:
24908 			case AVAILABILITY:
24909 			case CREDENTIAL:
24910 			case ENDPOINT:
24911 			case EVENT:
24912 			case NOTIFICATION:
24913 			case LINKED:
24914 			case AUDIT:
24915 			case DDL:
24916 			case XML:
24917 			case IMPERSONATE:
24918 			case SECURABLES:
24919 			case AUTHENTICATE:
24920 			case EXTERNAL:
24921 			case ACCESS:
24922 			case ADMINISTER:
24923 			case BULK:
24924 			case OPERATIONS:
24925 			case UNSAFE:
24926 			case SHUTDOWN:
24927 			case SCOPED:
24928 			case CONFIGURATION:
24929 			case DATASPACE:
24930 			case SERVICE:
24931 			case CERTIFICATE:
24932 			case CONTRACT:
24933 			case ENCRYPTION:
24934 			case MASTER:
24935 			case DATA:
24936 			case SOURCE:
24937 			case FILE:
24938 			case FORMAT:
24939 			case LIBRARY:
24940 			case FULLTEXT:
24941 			case MASK:
24942 			case UNMASK:
24943 			case MESSAGE:
24944 			case REMOTE:
24945 			case BINDING:
24946 			case ROUTE:
24947 			case SECURITY:
24948 			case POLICY:
24949 			case AGGREGATE:
24950 			case QUEUE:
24951 			case RULE:
24952 			case SYNONYM:
24953 			case COLLECTION:
24954 			case SCRIPT:
24955 			case KILL:
24956 			case BACKUP:
24957 			case LOG:
24958 			case SHOWPLAN:
24959 			case SUBSCRIBE:
24960 			case QUERY:
24961 			case NOTIFICATIONS:
24962 			case CHECKPOINT:
24963 			case SEQUENCE:
24964 			case ABORT_AFTER_WAIT:
24965 			case ALLOW_PAGE_LOCKS:
24966 			case ALLOW_ROW_LOCKS:
24967 			case ALL_SPARSE_COLUMNS:
24968 			case BUCKET_COUNT:
24969 			case COLUMNSTORE_ARCHIVE:
24970 			case COLUMN_ENCRYPTION_KEY:
24971 			case COLUMN_SET:
24972 			case COMPRESSION_DELAY:
24973 			case DATABASE_DEAULT:
24974 			case DATA_COMPRESSION:
24975 			case DATA_CONSISTENCY_CHECK:
24976 			case ENCRYPTION_TYPE:
24977 			case SYSTEM_TIME:
24978 			case SYSTEM_VERSIONING:
24979 			case TEXTIMAGE_ON:
24980 			case WAIT_AT_LOW_PRIORITY:
24981 			case STATISTICS_INCREMENTAL:
24982 			case STATISTICS_NORECOMPUTE:
24983 			case ROUND_ROBIN:
24984 			case SCHEMA_AND_DATA:
24985 			case SCHEMA_ONLY:
24986 			case SORT_IN_TEMPDB:
24987 			case IGNORE_DUP_KEY:
24988 			case IMPLICIT_TRANSACTIONS:
24989 			case MAX_DURATION:
24990 			case MEMORY_OPTIMIZED:
24991 			case MIGRATION_STATE:
24992 			case PAD_INDEX:
24993 			case REMOTE_DATA_ARCHIVE:
24994 			case FILESTREAM_ON:
24995 			case FILETABLE_COLLATE_FILENAME:
24996 			case FILETABLE_DIRECTORY:
24997 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
24998 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
24999 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
25000 			case FILTER_PREDICATE:
25001 			case HISTORY_RETENTION_PERIOD:
25002 			case HISTORY_TABLE:
25003 			case LOCK_ESCALATION:
25004 			case DROP_EXISTING:
25005 			case ROW_NUMBER:
25006 			case FIRST:
25007 			case DATETIME2:
25008 			case OUTPUT:
25009 			case INSERTED:
25010 			case DELETED:
25011 			case FILENAME:
25012 			case SIZE:
25013 			case MAXSIZE:
25014 			case FILEGROWTH:
25015 			case UNLIMITED:
25016 			case KB:
25017 			case MB:
25018 			case GB:
25019 			case TB:
25020 			case CONTAINS:
25021 			case MEMORY_OPTIMIZED_DATA:
25022 			case FILEGROUP:
25023 			case NON_TRANSACTED_ACCESS:
25024 			case DB_CHAINING:
25025 			case TRUSTWORTHY:
25026 			case FORWARD_ONLY:
25027 			case KEYSET:
25028 			case FAST_FORWARD:
25029 			case SCROLL_LOCKS:
25030 			case OPTIMISTIC:
25031 			case TYPE_WARNING:
25032 			case SCHEMABINDING:
25033 			case CALLER:
25034 			case OWNER:
25035 			case SNAPSHOT:
25036 			case REPEATABLE:
25037 			case SERIALIZABLE:
25038 			case NATIVE_COMPILATION:
25039 			case VIEW_METADATA:
25040 			case INSTEAD:
25041 			case APPEND:
25042 			case INCREMENT:
25043 			case CACHE:
25044 			case MINVALUE:
25045 			case MAXVALUE:
25046 			case RESTART:
25047 			case LOB_COMPACTION:
25048 			case COMPRESS_ALL_ROW_GROUPS:
25049 			case REORGANIZE:
25050 			case RESUME:
25051 			case PAUSE:
25052 			case ABORT:
25053 			case ACCELERATED_DATABASE_RECOVERY:
25054 			case PERSISTENT_VERSION_STORE_FILEGROUP:
25055 			case IMMEDIATE:
25056 			case NO_WAIT:
25057 			case TARGET_RECOVERY_TIME:
25058 			case SECONDS:
25059 			case HONOR_BROKER_PRIORITY:
25060 			case ERROR_BROKER_CONVERSATIONS:
25061 			case NEW_BROKER:
25062 			case DISABLE_BROKER:
25063 			case ENABLE_BROKER:
25064 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
25065 			case READ_COMMITTED_SNAPSHOT:
25066 			case ALLOW_SNAPSHOT_ISOLATION:
25067 			case RECURSIVE_TRIGGERS:
25068 			case QUOTED_IDENTIFIER:
25069 			case NUMERIC_ROUNDABORT:
25070 			case CONCAT_NULL_YIELDS_NULL:
25071 			case COMPATIBILITY_LEVEL:
25072 			case ARITHABORT:
25073 			case ANSI_WARNINGS:
25074 			case ANSI_PADDING:
25075 			case ANSI_NULLS:
25076 			case ANSI_NULL_DEFAULT:
25077 			case PAGE_VERIFY:
25078 			case CHECKSUM:
25079 			case TORN_PAGE_DETECTION:
25080 			case BULK_LOGGED:
25081 			case RECOVERY:
25082 			case TOTAL_EXECUTION_CPU_TIME_MS:
25083 			case TOTAL_COMPILE_CPU_TIME_MS:
25084 			case STALE_CAPTURE_POLICY_THRESHOLD:
25085 			case EXECUTION_COUNT:
25086 			case QUERY_CAPTURE_POLICY:
25087 			case WAIT_STATS_CAPTURE_MODE:
25088 			case MAX_PLANS_PER_QUERY:
25089 			case QUERY_CAPTURE_MODE:
25090 			case SIZE_BASED_CLEANUP_MODE:
25091 			case INTERVAL_LENGTH_MINUTES:
25092 			case MAX_STORAGE_SIZE_MB:
25093 			case DATA_FLUSH_INTERVAL_SECONDS:
25094 			case CLEANUP_POLICY:
25095 			case CUSTOM:
25096 			case STALE_QUERY_THRESHOLD_DAYS:
25097 			case OPERATION_MODE:
25098 			case QUERY_STORE:
25099 			case CURSOR_DEFAULT:
25100 			case GLOBAL:
25101 			case CURSOR_CLOSE_ON_COMMIT:
25102 			case HOURS:
25103 			case CHANGE_RETENTION:
25104 			case AUTO_CLEANUP:
25105 			case CHANGE_TRACKING:
25106 			case AUTOMATIC_TUNING:
25107 			case FORCE_LAST_GOOD_PLAN:
25108 			case AUTO_UPDATE_STATISTICS_ASYNC:
25109 			case AUTO_UPDATE_STATISTICS:
25110 			case AUTO_SHRINK:
25111 			case AUTO_CREATE_STATISTICS:
25112 			case INCREMENTAL:
25113 			case AUTO_CLOSE:
25114 			case DATA_RETENTION:
25115 			case TEMPORAL_HISTORY_RETENTION:
25116 			case EDITION:
25117 			case MIXED_PAGE_ALLOCATION:
25118 			case DISABLED:
25119 			case ALLOWED:
25120 			case HADR:
25121 			case MULTI_USER:
25122 			case RESTRICTED_USER:
25123 			case SINGLE_USER:
25124 			case OFFLINE:
25125 			case EMERGENCY:
25126 			case SUSPEND:
25127 			case DATE_CORRELATION_OPTIMIZATION:
25128 			case ELASTIC_POOL:
25129 			case SERVICE_OBJECTIVE:
25130 			case DATABASE_NAME:
25131 			case ALLOW_CONNECTIONS:
25132 			case GEO:
25133 			case NAMED:
25134 			case DATEFIRST:
25135 			case BACKUP_STORAGE_REDUNDANCY:
25136 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
25137 			case SECONDARY:
25138 			case FAILOVER:
25139 			case DEFAULT_FULLTEXT_LANGUAGE:
25140 			case DEFAULT_LANGUAGE:
25141 			case INLINE:
25142 			case NESTED_TRIGGERS:
25143 			case TRANSFORM_NOISE_WORDS:
25144 			case TWO_DIGIT_YEAR_CUTOFF:
25145 			case PERSISTENT_LOG_BUFFER:
25146 			case DIRECTORY_NAME:
25147 			case DATEFORMAT:
25148 			case DELAYED_DURABILITY:
25149 			case AUTHORIZATION:
25150 			case TRANSFER:
25151 			case PROVIDER:
25152 			case SEARCH:
25153 			case MEMBER:
25154 			case IDENTIFIER_:
25155 			case DELIMITED_IDENTIFIER_:
25156 				enterOuterAlt(_localctx, 1);
25157 				{
25158 				setState(3578);
25159 				variableTableColumnDefinition();
25160 				}
25161 				break;
25162 			case PRIMARY:
25163 			case UNIQUE:
25164 			case CHECK:
25165 				enterOuterAlt(_localctx, 2);
25166 				{
25167 				setState(3579);
25168 				variableTableConstraint();
25169 				}
25170 				break;
25171 			default:
25172 				throw new NoViableAltException(this);
25173 			}
25174 		}
25175 		catch (RecognitionException re) {
25176 			_localctx.exception = re;
25177 			_errHandler.reportError(this, re);
25178 			_errHandler.recover(this, re);
25179 		}
25180 		finally {
25181 			exitRule();
25182 		}
25183 		return _localctx;
25184 	}
25185 
25186 	public static class VariableTableColumnDefinitionContext extends ParserRuleContext {
25187 		public ColumnNameContext columnName() {
25188 			return getRuleContext(ColumnNameContext.class,0);
25189 		}
25190 		public VariableTableColumnConstraintContext variableTableColumnConstraint() {
25191 			return getRuleContext(VariableTableColumnConstraintContext.class,0);
25192 		}
25193 		public DataTypeNameContext dataTypeName() {
25194 			return getRuleContext(DataTypeNameContext.class,0);
25195 		}
25196 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
25197 		public List<ExprContext> expr() {
25198 			return getRuleContexts(ExprContext.class);
25199 		}
25200 		public ExprContext expr(int i) {
25201 			return getRuleContext(ExprContext.class,i);
25202 		}
25203 		public TerminalNode IDENTITY() { return getToken(SQLServerStatementParser.IDENTITY, 0); }
25204 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
25205 		public CollationNameContext collationName() {
25206 			return getRuleContext(CollationNameContext.class,0);
25207 		}
25208 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
25209 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
25210 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25211 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
25212 		public TerminalNode NUMBER_(int i) {
25213 			return getToken(SQLServerStatementParser.NUMBER_, i);
25214 		}
25215 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
25216 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25217 		public VariableTableColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
25218 			super(parent, invokingState);
25219 		}
25220 		@Override public int getRuleIndex() { return RULE_variableTableColumnDefinition; }
25221 		@Override
25222 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25223 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableColumnDefinition(this);
25224 			else return visitor.visitChildren(this);
25225 		}
25226 	}
25227 
25228 	public final VariableTableColumnDefinitionContext variableTableColumnDefinition() throws RecognitionException {
25229 		VariableTableColumnDefinitionContext _localctx = new VariableTableColumnDefinitionContext(_ctx, getState());
25230 		enterRule(_localctx, 528, RULE_variableTableColumnDefinition);
25231 		int _la;
25232 		try {
25233 			enterOuterAlt(_localctx, 1);
25234 			{
25235 			setState(3582);
25236 			columnName();
25237 			setState(3586);
25238 			_errHandler.sync(this);
25239 			switch (_input.LA(1)) {
25240 			case CHAR:
25241 			case DATE:
25242 			case TIME:
25243 			case INTEGER:
25244 			case REAL:
25245 			case DECIMAL:
25246 			case BIT:
25247 			case SMALLINT:
25248 			case INT:
25249 			case TINYINT:
25250 			case NUMERIC:
25251 			case FLOAT:
25252 			case BIGINT:
25253 			case TEXT:
25254 			case VARCHAR:
25255 			case BINARY:
25256 			case XML:
25257 			case MONEY:
25258 			case SMALLMONEY:
25259 			case DATETIMEOFFSET:
25260 			case DATETIME:
25261 			case DATETIME2:
25262 			case SMALLDATETIME:
25263 			case NCHAR:
25264 			case NVARCHAR:
25265 			case NTEXT:
25266 			case VARBINARY:
25267 			case IMAGE:
25268 			case SQL_VARIANT:
25269 			case UNIQUEIDENTIFIER:
25270 			case HIERARCHYID:
25271 			case GEOMETRY:
25272 			case GEOGRAPHY:
25273 			case IDENTIFIER_:
25274 				{
25275 				setState(3583);
25276 				dataTypeName();
25277 				}
25278 				break;
25279 			case AS:
25280 				{
25281 				setState(3584);
25282 				match(AS);
25283 				setState(3585);
25284 				expr(0);
25285 				}
25286 				break;
25287 			default:
25288 				throw new NoViableAltException(this);
25289 			}
25290 			setState(3590);
25291 			_errHandler.sync(this);
25292 			_la = _input.LA(1);
25293 			if (_la==COLLATE) {
25294 				{
25295 				setState(3588);
25296 				match(COLLATE);
25297 				setState(3589);
25298 				collationName();
25299 				}
25300 			}
25301 
25302 			setState(3604);
25303 			_errHandler.sync(this);
25304 			switch (_input.LA(1)) {
25305 			case RP_:
25306 			case COMMA_:
25307 			case PRIMARY:
25308 			case UNIQUE:
25309 			case WITH:
25310 			case NOT:
25311 			case NULL:
25312 			case DEFAULT:
25313 			case CHECK:
25314 			case ROWGUIDCOL:
25315 				{
25316 				setState(3594);
25317 				_errHandler.sync(this);
25318 				_la = _input.LA(1);
25319 				if (_la==DEFAULT) {
25320 					{
25321 					setState(3592);
25322 					match(DEFAULT);
25323 					setState(3593);
25324 					expr(0);
25325 					}
25326 				}
25327 
25328 				}
25329 				break;
25330 			case IDENTITY:
25331 				{
25332 				setState(3596);
25333 				match(IDENTITY);
25334 				setState(3602);
25335 				_errHandler.sync(this);
25336 				_la = _input.LA(1);
25337 				if (_la==LP_) {
25338 					{
25339 					setState(3597);
25340 					match(LP_);
25341 					setState(3598);
25342 					match(NUMBER_);
25343 					setState(3599);
25344 					match(COMMA_);
25345 					setState(3600);
25346 					match(NUMBER_);
25347 					setState(3601);
25348 					match(RP_);
25349 					}
25350 				}
25351 
25352 				}
25353 				break;
25354 			default:
25355 				throw new NoViableAltException(this);
25356 			}
25357 			setState(3607);
25358 			_errHandler.sync(this);
25359 			_la = _input.LA(1);
25360 			if (_la==ROWGUIDCOL) {
25361 				{
25362 				setState(3606);
25363 				match(ROWGUIDCOL);
25364 				}
25365 			}
25366 
25367 			setState(3609);
25368 			variableTableColumnConstraint();
25369 			}
25370 		}
25371 		catch (RecognitionException re) {
25372 			_localctx.exception = re;
25373 			_errHandler.reportError(this, re);
25374 			_errHandler.recover(this, re);
25375 		}
25376 		finally {
25377 			exitRule();
25378 		}
25379 		return _localctx;
25380 	}
25381 
25382 	public static class VariableTableColumnConstraintContext extends ParserRuleContext {
25383 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
25384 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
25385 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
25386 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
25387 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
25388 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
25389 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25390 		public ExprContext expr() {
25391 			return getRuleContext(ExprContext.class,0);
25392 		}
25393 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25394 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
25395 		public IndexOptionContext indexOption() {
25396 			return getRuleContext(IndexOptionContext.class,0);
25397 		}
25398 		public VariableTableColumnConstraintContext(ParserRuleContext parent, int invokingState) {
25399 			super(parent, invokingState);
25400 		}
25401 		@Override public int getRuleIndex() { return RULE_variableTableColumnConstraint; }
25402 		@Override
25403 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25404 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableColumnConstraint(this);
25405 			else return visitor.visitChildren(this);
25406 		}
25407 	}
25408 
25409 	public final VariableTableColumnConstraintContext variableTableColumnConstraint() throws RecognitionException {
25410 		VariableTableColumnConstraintContext _localctx = new VariableTableColumnConstraintContext(_ctx, getState());
25411 		enterRule(_localctx, 530, RULE_variableTableColumnConstraint);
25412 		try {
25413 			setState(3628);
25414 			_errHandler.sync(this);
25415 			switch ( getInterpreter().adaptivePredict(_input,357,_ctx) ) {
25416 			case 1:
25417 				enterOuterAlt(_localctx, 1);
25418 				{
25419 				setState(3614);
25420 				_errHandler.sync(this);
25421 				switch (_input.LA(1)) {
25422 				case NULL:
25423 					{
25424 					setState(3611);
25425 					match(NULL);
25426 					}
25427 					break;
25428 				case NOT:
25429 					{
25430 					setState(3612);
25431 					match(NOT);
25432 					setState(3613);
25433 					match(NULL);
25434 					}
25435 					break;
25436 				case RP_:
25437 				case COMMA_:
25438 					break;
25439 				default:
25440 					break;
25441 				}
25442 				}
25443 				break;
25444 			case 2:
25445 				enterOuterAlt(_localctx, 2);
25446 				{
25447 				setState(3619);
25448 				_errHandler.sync(this);
25449 				switch (_input.LA(1)) {
25450 				case PRIMARY:
25451 					{
25452 					setState(3616);
25453 					match(PRIMARY);
25454 					setState(3617);
25455 					match(KEY);
25456 					}
25457 					break;
25458 				case UNIQUE:
25459 					{
25460 					setState(3618);
25461 					match(UNIQUE);
25462 					}
25463 					break;
25464 				case RP_:
25465 				case COMMA_:
25466 					break;
25467 				default:
25468 					break;
25469 				}
25470 				}
25471 				break;
25472 			case 3:
25473 				enterOuterAlt(_localctx, 3);
25474 				{
25475 				setState(3621);
25476 				match(CHECK);
25477 				setState(3622);
25478 				match(LP_);
25479 				setState(3623);
25480 				expr(0);
25481 				setState(3624);
25482 				match(RP_);
25483 				}
25484 				break;
25485 			case 4:
25486 				enterOuterAlt(_localctx, 4);
25487 				{
25488 				setState(3626);
25489 				match(WITH);
25490 				setState(3627);
25491 				indexOption();
25492 				}
25493 				break;
25494 			}
25495 		}
25496 		catch (RecognitionException re) {
25497 			_localctx.exception = re;
25498 			_errHandler.reportError(this, re);
25499 			_errHandler.recover(this, re);
25500 		}
25501 		finally {
25502 			exitRule();
25503 		}
25504 		return _localctx;
25505 	}
25506 
25507 	public static class VariableTableConstraintContext extends ParserRuleContext {
25508 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25509 		public List<ColumnNameContext> columnName() {
25510 			return getRuleContexts(ColumnNameContext.class);
25511 		}
25512 		public ColumnNameContext columnName(int i) {
25513 			return getRuleContext(ColumnNameContext.class,i);
25514 		}
25515 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25516 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
25517 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
25518 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
25519 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25520 		public TerminalNode COMMA_(int i) {
25521 			return getToken(SQLServerStatementParser.COMMA_, i);
25522 		}
25523 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
25524 		public ExprContext expr() {
25525 			return getRuleContext(ExprContext.class,0);
25526 		}
25527 		public VariableTableConstraintContext(ParserRuleContext parent, int invokingState) {
25528 			super(parent, invokingState);
25529 		}
25530 		@Override public int getRuleIndex() { return RULE_variableTableConstraint; }
25531 		@Override
25532 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25533 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableConstraint(this);
25534 			else return visitor.visitChildren(this);
25535 		}
25536 	}
25537 
25538 	public final VariableTableConstraintContext variableTableConstraint() throws RecognitionException {
25539 		VariableTableConstraintContext _localctx = new VariableTableConstraintContext(_ctx, getState());
25540 		enterRule(_localctx, 532, RULE_variableTableConstraint);
25541 		int _la;
25542 		try {
25543 			setState(3648);
25544 			_errHandler.sync(this);
25545 			switch (_input.LA(1)) {
25546 			case PRIMARY:
25547 			case UNIQUE:
25548 				enterOuterAlt(_localctx, 1);
25549 				{
25550 				setState(3633);
25551 				_errHandler.sync(this);
25552 				switch (_input.LA(1)) {
25553 				case PRIMARY:
25554 					{
25555 					setState(3630);
25556 					match(PRIMARY);
25557 					setState(3631);
25558 					match(KEY);
25559 					}
25560 					break;
25561 				case UNIQUE:
25562 					{
25563 					setState(3632);
25564 					match(UNIQUE);
25565 					}
25566 					break;
25567 				default:
25568 					throw new NoViableAltException(this);
25569 				}
25570 				setState(3635);
25571 				match(LP_);
25572 				setState(3636);
25573 				columnName();
25574 				setState(3641);
25575 				_errHandler.sync(this);
25576 				_la = _input.LA(1);
25577 				while (_la==COMMA_) {
25578 					{
25579 					{
25580 					setState(3637);
25581 					match(COMMA_);
25582 					setState(3638);
25583 					columnName();
25584 					}
25585 					}
25586 					setState(3643);
25587 					_errHandler.sync(this);
25588 					_la = _input.LA(1);
25589 				}
25590 				setState(3644);
25591 				match(RP_);
25592 				}
25593 				break;
25594 			case CHECK:
25595 				enterOuterAlt(_localctx, 2);
25596 				{
25597 				setState(3646);
25598 				match(CHECK);
25599 				setState(3647);
25600 				expr(0);
25601 				}
25602 				break;
25603 			default:
25604 				throw new NoViableAltException(this);
25605 			}
25606 		}
25607 		catch (RecognitionException re) {
25608 			_localctx.exception = re;
25609 			_errHandler.reportError(this, re);
25610 			_errHandler.recover(this, re);
25611 		}
25612 		finally {
25613 			exitRule();
25614 		}
25615 		return _localctx;
25616 	}
25617 
25618 	public static class SetVariableContext extends ParserRuleContext {
25619 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
25620 		public VariableNameContext variableName() {
25621 			return getRuleContext(VariableNameContext.class,0);
25622 		}
25623 		public SetVariableClauseContext setVariableClause() {
25624 			return getRuleContext(SetVariableClauseContext.class,0);
25625 		}
25626 		public SetVariableContext(ParserRuleContext parent, int invokingState) {
25627 			super(parent, invokingState);
25628 		}
25629 		@Override public int getRuleIndex() { return RULE_setVariable; }
25630 		@Override
25631 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25632 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetVariable(this);
25633 			else return visitor.visitChildren(this);
25634 		}
25635 	}
25636 
25637 	public final SetVariableContext setVariable() throws RecognitionException {
25638 		SetVariableContext _localctx = new SetVariableContext(_ctx, getState());
25639 		enterRule(_localctx, 534, RULE_setVariable);
25640 		try {
25641 			enterOuterAlt(_localctx, 1);
25642 			{
25643 			setState(3650);
25644 			match(SET);
25645 			setState(3651);
25646 			variableName();
25647 			setState(3652);
25648 			setVariableClause();
25649 			}
25650 		}
25651 		catch (RecognitionException re) {
25652 			_localctx.exception = re;
25653 			_errHandler.reportError(this, re);
25654 			_errHandler.recover(this, re);
25655 		}
25656 		finally {
25657 			exitRule();
25658 		}
25659 		return _localctx;
25660 	}
25661 
25662 	public static class SetVariableClauseContext extends ParserRuleContext {
25663 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
25664 		public ExprContext expr() {
25665 			return getRuleContext(ExprContext.class,0);
25666 		}
25667 		public List<IdentifierContext> identifier() {
25668 			return getRuleContexts(IdentifierContext.class);
25669 		}
25670 		public IdentifierContext identifier(int i) {
25671 			return getRuleContext(IdentifierContext.class,i);
25672 		}
25673 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
25674 		public TerminalNode DOT_(int i) {
25675 			return getToken(SQLServerStatementParser.DOT_, i);
25676 		}
25677 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
25678 		public CompoundOperationContext compoundOperation() {
25679 			return getRuleContext(CompoundOperationContext.class,0);
25680 		}
25681 		public CursorVariableContext cursorVariable() {
25682 			return getRuleContext(CursorVariableContext.class,0);
25683 		}
25684 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25685 		public SelectContext select() {
25686 			return getRuleContext(SelectContext.class,0);
25687 		}
25688 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25689 		public SetVariableClauseContext(ParserRuleContext parent, int invokingState) {
25690 			super(parent, invokingState);
25691 		}
25692 		@Override public int getRuleIndex() { return RULE_setVariableClause; }
25693 		@Override
25694 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25695 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetVariableClause(this);
25696 			else return visitor.visitChildren(this);
25697 		}
25698 	}
25699 
25700 	public final SetVariableClauseContext setVariableClause() throws RecognitionException {
25701 		SetVariableClauseContext _localctx = new SetVariableClauseContext(_ctx, getState());
25702 		enterRule(_localctx, 536, RULE_setVariableClause);
25703 		int _la;
25704 		try {
25705 			setState(3677);
25706 			_errHandler.sync(this);
25707 			switch ( getInterpreter().adaptivePredict(_input,363,_ctx) ) {
25708 			case 1:
25709 				enterOuterAlt(_localctx, 1);
25710 				{
25711 				setState(3656);
25712 				_errHandler.sync(this);
25713 				_la = _input.LA(1);
25714 				if (_la==DOT_) {
25715 					{
25716 					setState(3654);
25717 					match(DOT_);
25718 					setState(3655);
25719 					identifier();
25720 					}
25721 				}
25722 
25723 				setState(3658);
25724 				match(EQ_);
25725 				setState(3665);
25726 				_errHandler.sync(this);
25727 				switch ( getInterpreter().adaptivePredict(_input,362,_ctx) ) {
25728 				case 1:
25729 					{
25730 					setState(3659);
25731 					expr(0);
25732 					}
25733 					break;
25734 				case 2:
25735 					{
25736 					setState(3660);
25737 					identifier();
25738 					setState(3661);
25739 					match(DOT_);
25740 					setState(3662);
25741 					identifier();
25742 					}
25743 					break;
25744 				case 3:
25745 					{
25746 					setState(3664);
25747 					match(NCHAR_TEXT);
25748 					}
25749 					break;
25750 				}
25751 				}
25752 				break;
25753 			case 2:
25754 				enterOuterAlt(_localctx, 2);
25755 				{
25756 				setState(3667);
25757 				compoundOperation();
25758 				setState(3668);
25759 				expr(0);
25760 				}
25761 				break;
25762 			case 3:
25763 				enterOuterAlt(_localctx, 3);
25764 				{
25765 				setState(3670);
25766 				match(EQ_);
25767 				setState(3671);
25768 				cursorVariable();
25769 				}
25770 				break;
25771 			case 4:
25772 				enterOuterAlt(_localctx, 4);
25773 				{
25774 				setState(3672);
25775 				match(EQ_);
25776 				setState(3673);
25777 				match(LP_);
25778 				setState(3674);
25779 				select();
25780 				setState(3675);
25781 				match(RP_);
25782 				}
25783 				break;
25784 			}
25785 		}
25786 		catch (RecognitionException re) {
25787 			_localctx.exception = re;
25788 			_errHandler.reportError(this, re);
25789 			_errHandler.recover(this, re);
25790 		}
25791 		finally {
25792 			exitRule();
25793 		}
25794 		return _localctx;
25795 	}
25796 
25797 	public static class CursorVariableContext extends ParserRuleContext {
25798 		public VariableNameContext variableName() {
25799 			return getRuleContext(VariableNameContext.class,0);
25800 		}
25801 		public TerminalNode CURSOR() { return getToken(SQLServerStatementParser.CURSOR, 0); }
25802 		public CursorClauseContext cursorClause() {
25803 			return getRuleContext(CursorClauseContext.class,0);
25804 		}
25805 		public List<TerminalNode> FOR() { return getTokens(SQLServerStatementParser.FOR); }
25806 		public TerminalNode FOR(int i) {
25807 			return getToken(SQLServerStatementParser.FOR, i);
25808 		}
25809 		public SelectContext select() {
25810 			return getRuleContext(SelectContext.class,0);
25811 		}
25812 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
25813 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
25814 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
25815 		public List<NameContext> name() {
25816 			return getRuleContexts(NameContext.class);
25817 		}
25818 		public NameContext name(int i) {
25819 			return getRuleContext(NameContext.class,i);
25820 		}
25821 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25822 		public TerminalNode COMMA_(int i) {
25823 			return getToken(SQLServerStatementParser.COMMA_, i);
25824 		}
25825 		public CursorVariableContext(ParserRuleContext parent, int invokingState) {
25826 			super(parent, invokingState);
25827 		}
25828 		@Override public int getRuleIndex() { return RULE_cursorVariable; }
25829 		@Override
25830 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25831 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorVariable(this);
25832 			else return visitor.visitChildren(this);
25833 		}
25834 	}
25835 
25836 	public final CursorVariableContext cursorVariable() throws RecognitionException {
25837 		CursorVariableContext _localctx = new CursorVariableContext(_ctx, getState());
25838 		enterRule(_localctx, 538, RULE_cursorVariable);
25839 		int _la;
25840 		try {
25841 			setState(3698);
25842 			_errHandler.sync(this);
25843 			switch (_input.LA(1)) {
25844 			case TRUNCATE:
25845 			case SCHEMA:
25846 			case COLUMNS:
25847 			case PRECISION:
25848 			case FUNCTION:
25849 			case TRIGGER:
25850 			case CAST:
25851 			case SUBSTRING:
25852 			case OFF:
25853 			case GROUP:
25854 			case LIMIT:
25855 			case OFFSET:
25856 			case SAVEPOINT:
25857 			case BOOLEAN:
25858 			case ARRAY:
25859 			case DATE:
25860 			case LOCALTIME:
25861 			case LOCALTIMESTAMP:
25862 			case QUARTER:
25863 			case MONTH:
25864 			case WEEK:
25865 			case DAY:
25866 			case SECOND:
25867 			case MICROSECOND:
25868 			case MAX:
25869 			case MIN:
25870 			case SUM:
25871 			case COUNT:
25872 			case AVG:
25873 			case ENABLE:
25874 			case DISABLE:
25875 			case INSTANCE:
25876 			case DO:
25877 			case DEFINER:
25878 			case SQL:
25879 			case CASCADED:
25880 			case LOCAL:
25881 			case NEXT:
25882 			case NAME:
25883 			case INTEGER:
25884 			case TYPE:
25885 			case TEXT:
25886 			case VIEWS:
25887 			case READ_ONLY:
25888 			case DATABASE:
25889 			case RETURNS:
25890 			case DATEPART:
25891 			case PASSWORD:
25892 			case BINARY:
25893 			case HIDDEN_:
25894 			case MOD:
25895 			case PARTITION:
25896 			case PARTITIONS:
25897 			case TOP:
25898 			case ROW:
25899 			case ROWS:
25900 			case XOR:
25901 			case ALWAYS:
25902 			case ROLE:
25903 			case START:
25904 			case ALGORITHM:
25905 			case AUTO:
25906 			case BLOCKERS:
25907 			case CLUSTERED:
25908 			case NONCLUSTERED:
25909 			case COLUMNSTORE:
25910 			case CONTENT:
25911 			case YEARS:
25912 			case MONTHS:
25913 			case WEEKS:
25914 			case DAYS:
25915 			case MINUTES:
25916 			case DENY:
25917 			case DETERMINISTIC:
25918 			case DISTRIBUTION:
25919 			case DOCUMENT:
25920 			case DURABILITY:
25921 			case ENCRYPTED:
25922 			case FILESTREAM:
25923 			case FILETABLE:
25924 			case FILLFACTOR:
25925 			case FOLLOWING:
25926 			case HASH:
25927 			case HEAP:
25928 			case INBOUND:
25929 			case OUTBOUND:
25930 			case UNBOUNDED:
25931 			case INFINITE:
25932 			case LOGIN:
25933 			case MASKED:
25934 			case MAXDOP:
25935 			case MOVE:
25936 			case NOCHECK:
25937 			case OBJECT:
25938 			case ONLINE:
25939 			case OVER:
25940 			case PAGE:
25941 			case PAUSED:
25942 			case PERIOD:
25943 			case PERSISTED:
25944 			case PRECEDING:
25945 			case RANDOMIZED:
25946 			case RANGE:
25947 			case REBUILD:
25948 			case REPLICATE:
25949 			case REPLICATION:
25950 			case RESUMABLE:
25951 			case ROWGUIDCOL:
25952 			case SAVE:
25953 			case SELF:
25954 			case SPARSE:
25955 			case SWITCH:
25956 			case TRAN:
25957 			case TRANCOUNT:
25958 			case CONTROL:
25959 			case CONCAT:
25960 			case TAKE:
25961 			case OWNERSHIP:
25962 			case DEFINITION:
25963 			case APPLICATION:
25964 			case ASSEMBLY:
25965 			case SYMMETRIC:
25966 			case ASYMMETRIC:
25967 			case SERVER:
25968 			case RECEIVE:
25969 			case CHANGE:
25970 			case TRACE:
25971 			case TRACKING:
25972 			case RESOURCES:
25973 			case SETTINGS:
25974 			case STATE:
25975 			case AVAILABILITY:
25976 			case CREDENTIAL:
25977 			case ENDPOINT:
25978 			case EVENT:
25979 			case NOTIFICATION:
25980 			case LINKED:
25981 			case AUDIT:
25982 			case DDL:
25983 			case XML:
25984 			case IMPERSONATE:
25985 			case SECURABLES:
25986 			case AUTHENTICATE:
25987 			case EXTERNAL:
25988 			case ACCESS:
25989 			case ADMINISTER:
25990 			case BULK:
25991 			case OPERATIONS:
25992 			case UNSAFE:
25993 			case SHUTDOWN:
25994 			case SCOPED:
25995 			case CONFIGURATION:
25996 			case DATASPACE:
25997 			case SERVICE:
25998 			case CERTIFICATE:
25999 			case CONTRACT:
26000 			case ENCRYPTION:
26001 			case MASTER:
26002 			case DATA:
26003 			case SOURCE:
26004 			case FILE:
26005 			case FORMAT:
26006 			case LIBRARY:
26007 			case FULLTEXT:
26008 			case MASK:
26009 			case UNMASK:
26010 			case MESSAGE:
26011 			case REMOTE:
26012 			case BINDING:
26013 			case ROUTE:
26014 			case SECURITY:
26015 			case POLICY:
26016 			case AGGREGATE:
26017 			case QUEUE:
26018 			case RULE:
26019 			case SYNONYM:
26020 			case COLLECTION:
26021 			case SCRIPT:
26022 			case KILL:
26023 			case BACKUP:
26024 			case LOG:
26025 			case SHOWPLAN:
26026 			case SUBSCRIBE:
26027 			case QUERY:
26028 			case NOTIFICATIONS:
26029 			case CHECKPOINT:
26030 			case SEQUENCE:
26031 			case ABORT_AFTER_WAIT:
26032 			case ALLOW_PAGE_LOCKS:
26033 			case ALLOW_ROW_LOCKS:
26034 			case ALL_SPARSE_COLUMNS:
26035 			case BUCKET_COUNT:
26036 			case COLUMNSTORE_ARCHIVE:
26037 			case COLUMN_ENCRYPTION_KEY:
26038 			case COLUMN_SET:
26039 			case COMPRESSION_DELAY:
26040 			case DATABASE_DEAULT:
26041 			case DATA_COMPRESSION:
26042 			case DATA_CONSISTENCY_CHECK:
26043 			case ENCRYPTION_TYPE:
26044 			case SYSTEM_TIME:
26045 			case SYSTEM_VERSIONING:
26046 			case TEXTIMAGE_ON:
26047 			case WAIT_AT_LOW_PRIORITY:
26048 			case STATISTICS_INCREMENTAL:
26049 			case STATISTICS_NORECOMPUTE:
26050 			case ROUND_ROBIN:
26051 			case SCHEMA_AND_DATA:
26052 			case SCHEMA_ONLY:
26053 			case SORT_IN_TEMPDB:
26054 			case IGNORE_DUP_KEY:
26055 			case IMPLICIT_TRANSACTIONS:
26056 			case MAX_DURATION:
26057 			case MEMORY_OPTIMIZED:
26058 			case MIGRATION_STATE:
26059 			case PAD_INDEX:
26060 			case REMOTE_DATA_ARCHIVE:
26061 			case FILESTREAM_ON:
26062 			case FILETABLE_COLLATE_FILENAME:
26063 			case FILETABLE_DIRECTORY:
26064 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
26065 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
26066 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
26067 			case FILTER_PREDICATE:
26068 			case HISTORY_RETENTION_PERIOD:
26069 			case HISTORY_TABLE:
26070 			case LOCK_ESCALATION:
26071 			case DROP_EXISTING:
26072 			case ROW_NUMBER:
26073 			case FIRST:
26074 			case DATETIME2:
26075 			case OUTPUT:
26076 			case INSERTED:
26077 			case DELETED:
26078 			case FILENAME:
26079 			case SIZE:
26080 			case MAXSIZE:
26081 			case FILEGROWTH:
26082 			case UNLIMITED:
26083 			case KB:
26084 			case MB:
26085 			case GB:
26086 			case TB:
26087 			case CONTAINS:
26088 			case MEMORY_OPTIMIZED_DATA:
26089 			case FILEGROUP:
26090 			case NON_TRANSACTED_ACCESS:
26091 			case DB_CHAINING:
26092 			case TRUSTWORTHY:
26093 			case FORWARD_ONLY:
26094 			case KEYSET:
26095 			case FAST_FORWARD:
26096 			case SCROLL_LOCKS:
26097 			case OPTIMISTIC:
26098 			case TYPE_WARNING:
26099 			case SCHEMABINDING:
26100 			case CALLER:
26101 			case OWNER:
26102 			case SNAPSHOT:
26103 			case REPEATABLE:
26104 			case SERIALIZABLE:
26105 			case NATIVE_COMPILATION:
26106 			case VIEW_METADATA:
26107 			case INSTEAD:
26108 			case APPEND:
26109 			case INCREMENT:
26110 			case CACHE:
26111 			case MINVALUE:
26112 			case MAXVALUE:
26113 			case RESTART:
26114 			case LOB_COMPACTION:
26115 			case COMPRESS_ALL_ROW_GROUPS:
26116 			case REORGANIZE:
26117 			case RESUME:
26118 			case PAUSE:
26119 			case ABORT:
26120 			case ACCELERATED_DATABASE_RECOVERY:
26121 			case PERSISTENT_VERSION_STORE_FILEGROUP:
26122 			case IMMEDIATE:
26123 			case NO_WAIT:
26124 			case TARGET_RECOVERY_TIME:
26125 			case SECONDS:
26126 			case HONOR_BROKER_PRIORITY:
26127 			case ERROR_BROKER_CONVERSATIONS:
26128 			case NEW_BROKER:
26129 			case DISABLE_BROKER:
26130 			case ENABLE_BROKER:
26131 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
26132 			case READ_COMMITTED_SNAPSHOT:
26133 			case ALLOW_SNAPSHOT_ISOLATION:
26134 			case RECURSIVE_TRIGGERS:
26135 			case QUOTED_IDENTIFIER:
26136 			case NUMERIC_ROUNDABORT:
26137 			case CONCAT_NULL_YIELDS_NULL:
26138 			case COMPATIBILITY_LEVEL:
26139 			case ARITHABORT:
26140 			case ANSI_WARNINGS:
26141 			case ANSI_PADDING:
26142 			case ANSI_NULLS:
26143 			case ANSI_NULL_DEFAULT:
26144 			case PAGE_VERIFY:
26145 			case CHECKSUM:
26146 			case TORN_PAGE_DETECTION:
26147 			case BULK_LOGGED:
26148 			case RECOVERY:
26149 			case TOTAL_EXECUTION_CPU_TIME_MS:
26150 			case TOTAL_COMPILE_CPU_TIME_MS:
26151 			case STALE_CAPTURE_POLICY_THRESHOLD:
26152 			case EXECUTION_COUNT:
26153 			case QUERY_CAPTURE_POLICY:
26154 			case WAIT_STATS_CAPTURE_MODE:
26155 			case MAX_PLANS_PER_QUERY:
26156 			case QUERY_CAPTURE_MODE:
26157 			case SIZE_BASED_CLEANUP_MODE:
26158 			case INTERVAL_LENGTH_MINUTES:
26159 			case MAX_STORAGE_SIZE_MB:
26160 			case DATA_FLUSH_INTERVAL_SECONDS:
26161 			case CLEANUP_POLICY:
26162 			case CUSTOM:
26163 			case STALE_QUERY_THRESHOLD_DAYS:
26164 			case OPERATION_MODE:
26165 			case QUERY_STORE:
26166 			case CURSOR_DEFAULT:
26167 			case GLOBAL:
26168 			case CURSOR_CLOSE_ON_COMMIT:
26169 			case HOURS:
26170 			case CHANGE_RETENTION:
26171 			case AUTO_CLEANUP:
26172 			case CHANGE_TRACKING:
26173 			case AUTOMATIC_TUNING:
26174 			case FORCE_LAST_GOOD_PLAN:
26175 			case AUTO_UPDATE_STATISTICS_ASYNC:
26176 			case AUTO_UPDATE_STATISTICS:
26177 			case AUTO_SHRINK:
26178 			case AUTO_CREATE_STATISTICS:
26179 			case INCREMENTAL:
26180 			case AUTO_CLOSE:
26181 			case DATA_RETENTION:
26182 			case TEMPORAL_HISTORY_RETENTION:
26183 			case EDITION:
26184 			case MIXED_PAGE_ALLOCATION:
26185 			case DISABLED:
26186 			case ALLOWED:
26187 			case HADR:
26188 			case MULTI_USER:
26189 			case RESTRICTED_USER:
26190 			case SINGLE_USER:
26191 			case OFFLINE:
26192 			case EMERGENCY:
26193 			case SUSPEND:
26194 			case DATE_CORRELATION_OPTIMIZATION:
26195 			case ELASTIC_POOL:
26196 			case SERVICE_OBJECTIVE:
26197 			case DATABASE_NAME:
26198 			case ALLOW_CONNECTIONS:
26199 			case GEO:
26200 			case NAMED:
26201 			case DATEFIRST:
26202 			case BACKUP_STORAGE_REDUNDANCY:
26203 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
26204 			case SECONDARY:
26205 			case FAILOVER:
26206 			case DEFAULT_FULLTEXT_LANGUAGE:
26207 			case DEFAULT_LANGUAGE:
26208 			case INLINE:
26209 			case NESTED_TRIGGERS:
26210 			case TRANSFORM_NOISE_WORDS:
26211 			case TWO_DIGIT_YEAR_CUTOFF:
26212 			case PERSISTENT_LOG_BUFFER:
26213 			case DIRECTORY_NAME:
26214 			case DATEFORMAT:
26215 			case DELAYED_DURABILITY:
26216 			case AUTHORIZATION:
26217 			case TRANSFER:
26218 			case PROVIDER:
26219 			case SEARCH:
26220 			case MEMBER:
26221 			case IDENTIFIER_:
26222 			case DELIMITED_IDENTIFIER_:
26223 				enterOuterAlt(_localctx, 1);
26224 				{
26225 				setState(3679);
26226 				variableName();
26227 				}
26228 				break;
26229 			case CURSOR:
26230 				enterOuterAlt(_localctx, 2);
26231 				{
26232 				setState(3680);
26233 				match(CURSOR);
26234 				setState(3681);
26235 				cursorClause();
26236 				setState(3682);
26237 				match(FOR);
26238 				setState(3683);
26239 				select();
26240 				{
26241 				setState(3684);
26242 				match(FOR);
26243 				setState(3696);
26244 				_errHandler.sync(this);
26245 				switch (_input.LA(1)) {
26246 				case READ_ONLY:
26247 					{
26248 					setState(3685);
26249 					match(READ_ONLY);
26250 					}
26251 					break;
26252 				case UPDATE:
26253 					{
26254 					setState(3686);
26255 					match(UPDATE);
26256 					{
26257 					setState(3687);
26258 					match(OF);
26259 					setState(3688);
26260 					name();
26261 					setState(3693);
26262 					_errHandler.sync(this);
26263 					_la = _input.LA(1);
26264 					while (_la==COMMA_) {
26265 						{
26266 						{
26267 						setState(3689);
26268 						match(COMMA_);
26269 						setState(3690);
26270 						name();
26271 						}
26272 						}
26273 						setState(3695);
26274 						_errHandler.sync(this);
26275 						_la = _input.LA(1);
26276 					}
26277 					}
26278 					}
26279 					break;
26280 				default:
26281 					throw new NoViableAltException(this);
26282 				}
26283 				}
26284 				}
26285 				break;
26286 			default:
26287 				throw new NoViableAltException(this);
26288 			}
26289 		}
26290 		catch (RecognitionException re) {
26291 			_localctx.exception = re;
26292 			_errHandler.reportError(this, re);
26293 			_errHandler.recover(this, re);
26294 		}
26295 		finally {
26296 			exitRule();
26297 		}
26298 		return _localctx;
26299 	}
26300 
26301 	public static class CursorClauseContext extends ParserRuleContext {
26302 		public TerminalNode TYPE_WARNING() { return getToken(SQLServerStatementParser.TYPE_WARNING, 0); }
26303 		public TerminalNode FORWARD_ONLY() { return getToken(SQLServerStatementParser.FORWARD_ONLY, 0); }
26304 		public TerminalNode SCROLL() { return getToken(SQLServerStatementParser.SCROLL, 0); }
26305 		public TerminalNode STATIC() { return getToken(SQLServerStatementParser.STATIC, 0); }
26306 		public TerminalNode KEYSET() { return getToken(SQLServerStatementParser.KEYSET, 0); }
26307 		public TerminalNode DYNAMIC() { return getToken(SQLServerStatementParser.DYNAMIC, 0); }
26308 		public TerminalNode FAST_FORWARD() { return getToken(SQLServerStatementParser.FAST_FORWARD, 0); }
26309 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
26310 		public TerminalNode SCROLL_LOCKS() { return getToken(SQLServerStatementParser.SCROLL_LOCKS, 0); }
26311 		public TerminalNode OPTIMISTIC() { return getToken(SQLServerStatementParser.OPTIMISTIC, 0); }
26312 		public CursorClauseContext(ParserRuleContext parent, int invokingState) {
26313 			super(parent, invokingState);
26314 		}
26315 		@Override public int getRuleIndex() { return RULE_cursorClause; }
26316 		@Override
26317 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26318 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorClause(this);
26319 			else return visitor.visitChildren(this);
26320 		}
26321 	}
26322 
26323 	public final CursorClauseContext cursorClause() throws RecognitionException {
26324 		CursorClauseContext _localctx = new CursorClauseContext(_ctx, getState());
26325 		enterRule(_localctx, 540, RULE_cursorClause);
26326 		int _la;
26327 		try {
26328 			enterOuterAlt(_localctx, 1);
26329 			{
26330 			setState(3701);
26331 			_errHandler.sync(this);
26332 			_la = _input.LA(1);
26333 			if (_la==FORWARD_ONLY || _la==SCROLL) {
26334 				{
26335 				setState(3700);
26336 				_la = _input.LA(1);
26337 				if ( !(_la==FORWARD_ONLY || _la==SCROLL) ) {
26338 				_errHandler.recoverInline(this);
26339 				}
26340 				else {
26341 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
26342 					_errHandler.reportMatch(this);
26343 					consume();
26344 				}
26345 				}
26346 			}
26347 
26348 			setState(3704);
26349 			_errHandler.sync(this);
26350 			_la = _input.LA(1);
26351 			if (((((_la - 514)) & ~0x3f) == 0 && ((1L << (_la - 514)) & ((1L << (STATIC - 514)) | (1L << (KEYSET - 514)) | (1L << (DYNAMIC - 514)) | (1L << (FAST_FORWARD - 514)))) != 0)) {
26352 				{
26353 				setState(3703);
26354 				_la = _input.LA(1);
26355 				if ( !(((((_la - 514)) & ~0x3f) == 0 && ((1L << (_la - 514)) & ((1L << (STATIC - 514)) | (1L << (KEYSET - 514)) | (1L << (DYNAMIC - 514)) | (1L << (FAST_FORWARD - 514)))) != 0)) ) {
26356 				_errHandler.recoverInline(this);
26357 				}
26358 				else {
26359 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
26360 					_errHandler.reportMatch(this);
26361 					consume();
26362 				}
26363 				}
26364 			}
26365 
26366 			setState(3707);
26367 			_errHandler.sync(this);
26368 			_la = _input.LA(1);
26369 			if (_la==READ_ONLY || _la==SCROLL_LOCKS || _la==OPTIMISTIC) {
26370 				{
26371 				setState(3706);
26372 				_la = _input.LA(1);
26373 				if ( !(_la==READ_ONLY || _la==SCROLL_LOCKS || _la==OPTIMISTIC) ) {
26374 				_errHandler.recoverInline(this);
26375 				}
26376 				else {
26377 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
26378 					_errHandler.reportMatch(this);
26379 					consume();
26380 				}
26381 				}
26382 			}
26383 
26384 			setState(3710);
26385 			_errHandler.sync(this);
26386 			_la = _input.LA(1);
26387 			if (_la==TYPE_WARNING) {
26388 				{
26389 				setState(3709);
26390 				match(TYPE_WARNING);
26391 				}
26392 			}
26393 
26394 			}
26395 		}
26396 		catch (RecognitionException re) {
26397 			_localctx.exception = re;
26398 			_errHandler.reportError(this, re);
26399 			_errHandler.recover(this, re);
26400 		}
26401 		finally {
26402 			exitRule();
26403 		}
26404 		return _localctx;
26405 	}
26406 
26407 	public static class CompoundOperationContext extends ParserRuleContext {
26408 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
26409 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
26410 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
26411 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
26412 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
26413 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
26414 		public TerminalNode AMPERSAND_() { return getToken(SQLServerStatementParser.AMPERSAND_, 0); }
26415 		public TerminalNode CARET_() { return getToken(SQLServerStatementParser.CARET_, 0); }
26416 		public TerminalNode VERTICAL_BAR_() { return getToken(SQLServerStatementParser.VERTICAL_BAR_, 0); }
26417 		public CompoundOperationContext(ParserRuleContext parent, int invokingState) {
26418 			super(parent, invokingState);
26419 		}
26420 		@Override public int getRuleIndex() { return RULE_compoundOperation; }
26421 		@Override
26422 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26423 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompoundOperation(this);
26424 			else return visitor.visitChildren(this);
26425 		}
26426 	}
26427 
26428 	public final CompoundOperationContext compoundOperation() throws RecognitionException {
26429 		CompoundOperationContext _localctx = new CompoundOperationContext(_ctx, getState());
26430 		enterRule(_localctx, 542, RULE_compoundOperation);
26431 		try {
26432 			setState(3728);
26433 			_errHandler.sync(this);
26434 			switch (_input.LA(1)) {
26435 			case PLUS_:
26436 				enterOuterAlt(_localctx, 1);
26437 				{
26438 				setState(3712);
26439 				match(PLUS_);
26440 				setState(3713);
26441 				match(EQ_);
26442 				}
26443 				break;
26444 			case MINUS_:
26445 				enterOuterAlt(_localctx, 2);
26446 				{
26447 				setState(3714);
26448 				match(MINUS_);
26449 				setState(3715);
26450 				match(EQ_);
26451 				}
26452 				break;
26453 			case ASTERISK_:
26454 				enterOuterAlt(_localctx, 3);
26455 				{
26456 				setState(3716);
26457 				match(ASTERISK_);
26458 				setState(3717);
26459 				match(EQ_);
26460 				}
26461 				break;
26462 			case SLASH_:
26463 				enterOuterAlt(_localctx, 4);
26464 				{
26465 				setState(3718);
26466 				match(SLASH_);
26467 				setState(3719);
26468 				match(EQ_);
26469 				}
26470 				break;
26471 			case MOD_:
26472 				enterOuterAlt(_localctx, 5);
26473 				{
26474 				setState(3720);
26475 				match(MOD_);
26476 				setState(3721);
26477 				match(EQ_);
26478 				}
26479 				break;
26480 			case AMPERSAND_:
26481 				enterOuterAlt(_localctx, 6);
26482 				{
26483 				setState(3722);
26484 				match(AMPERSAND_);
26485 				setState(3723);
26486 				match(EQ_);
26487 				}
26488 				break;
26489 			case CARET_:
26490 				enterOuterAlt(_localctx, 7);
26491 				{
26492 				setState(3724);
26493 				match(CARET_);
26494 				setState(3725);
26495 				match(EQ_);
26496 				}
26497 				break;
26498 			case VERTICAL_BAR_:
26499 				enterOuterAlt(_localctx, 8);
26500 				{
26501 				setState(3726);
26502 				match(VERTICAL_BAR_);
26503 				setState(3727);
26504 				match(EQ_);
26505 				}
26506 				break;
26507 			default:
26508 				throw new NoViableAltException(this);
26509 			}
26510 		}
26511 		catch (RecognitionException re) {
26512 			_localctx.exception = re;
26513 			_errHandler.reportError(this, re);
26514 			_errHandler.recover(this, re);
26515 		}
26516 		finally {
26517 			exitRule();
26518 		}
26519 		return _localctx;
26520 	}
26521 
26522 	public static class FuncParametersContext extends ParserRuleContext {
26523 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
26524 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
26525 		public List<VariableNameContext> variableName() {
26526 			return getRuleContexts(VariableNameContext.class);
26527 		}
26528 		public VariableNameContext variableName(int i) {
26529 			return getRuleContext(VariableNameContext.class,i);
26530 		}
26531 		public List<DataTypeContext> dataType() {
26532 			return getRuleContexts(DataTypeContext.class);
26533 		}
26534 		public DataTypeContext dataType(int i) {
26535 			return getRuleContext(DataTypeContext.class,i);
26536 		}
26537 		public List<TerminalNode> AS() { return getTokens(SQLServerStatementParser.AS); }
26538 		public TerminalNode AS(int i) {
26539 			return getToken(SQLServerStatementParser.AS, i);
26540 		}
26541 		public List<OwnerContext> owner() {
26542 			return getRuleContexts(OwnerContext.class);
26543 		}
26544 		public OwnerContext owner(int i) {
26545 			return getRuleContext(OwnerContext.class,i);
26546 		}
26547 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
26548 		public TerminalNode DOT_(int i) {
26549 			return getToken(SQLServerStatementParser.DOT_, i);
26550 		}
26551 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
26552 		public TerminalNode EQ_(int i) {
26553 			return getToken(SQLServerStatementParser.EQ_, i);
26554 		}
26555 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
26556 			return getRuleContexts(IgnoredIdentifierContext.class);
26557 		}
26558 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
26559 			return getRuleContext(IgnoredIdentifierContext.class,i);
26560 		}
26561 		public List<TerminalNode> READONLY() { return getTokens(SQLServerStatementParser.READONLY); }
26562 		public TerminalNode READONLY(int i) {
26563 			return getToken(SQLServerStatementParser.READONLY, i);
26564 		}
26565 		public FuncParametersContext(ParserRuleContext parent, int invokingState) {
26566 			super(parent, invokingState);
26567 		}
26568 		@Override public int getRuleIndex() { return RULE_funcParameters; }
26569 		@Override
26570 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26571 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncParameters(this);
26572 			else return visitor.visitChildren(this);
26573 		}
26574 	}
26575 
26576 	public final FuncParametersContext funcParameters() throws RecognitionException {
26577 		FuncParametersContext _localctx = new FuncParametersContext(_ctx, getState());
26578 		enterRule(_localctx, 544, RULE_funcParameters);
26579 		int _la;
26580 		try {
26581 			enterOuterAlt(_localctx, 1);
26582 			{
26583 			setState(3730);
26584 			match(LP_);
26585 			setState(3750);
26586 			_errHandler.sync(this);
26587 			_la = _input.LA(1);
26588 			while (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)) | (1L << (ROW - 184)) | (1L << (ROWS - 184)) | (1L << (XOR - 184)) | (1L << (ALWAYS - 184)))) != 0) || ((((_la - 254)) & ~0x3f) == 0 && ((1L << (_la - 254)) & ((1L << (ROLE - 254)) | (1L << (START - 254)) | (1L << (ALGORITHM - 254)) | (1L << (AUTO - 254)) | (1L << (BLOCKERS - 254)) | (1L << (CLUSTERED - 254)) | (1L << (NONCLUSTERED - 254)) | (1L << (COLUMNSTORE - 254)) | (1L << (CONTENT - 254)) | (1L << (YEARS - 254)) | (1L << (MONTHS - 254)) | (1L << (WEEKS - 254)) | (1L << (DAYS - 254)) | (1L << (MINUTES - 254)) | (1L << (DENY - 254)) | (1L << (DETERMINISTIC - 254)) | (1L << (DISTRIBUTION - 254)) | (1L << (DOCUMENT - 254)) | (1L << (DURABILITY - 254)) | (1L << (ENCRYPTED - 254)) | (1L << (FILESTREAM - 254)) | (1L << (FILETABLE - 254)) | (1L << (FILLFACTOR - 254)) | (1L << (FOLLOWING - 254)) | (1L << (HASH - 254)) | (1L << (HEAP - 254)) | (1L << (INBOUND - 254)) | (1L << (OUTBOUND - 254)) | (1L << (UNBOUNDED - 254)) | (1L << (INFINITE - 254)) | (1L << (LOGIN - 254)) | (1L << (MASKED - 254)) | (1L << (MAXDOP - 254)) | (1L << (MOVE - 254)) | (1L << (NOCHECK - 254)) | (1L << (OBJECT - 254)) | (1L << (ONLINE - 254)) | (1L << (OVER - 254)) | (1L << (PAGE - 254)) | (1L << (PAUSED - 254)) | (1L << (PERIOD - 254)) | (1L << (PERSISTED - 254)) | (1L << (PRECEDING - 254)) | (1L << (RANDOMIZED - 254)) | (1L << (RANGE - 254)) | (1L << (REBUILD - 254)) | (1L << (REPLICATE - 254)) | (1L << (REPLICATION - 254)) | (1L << (RESUMABLE - 254)) | (1L << (ROWGUIDCOL - 254)) | (1L << (SAVE - 254)) | (1L << (SELF - 254)) | (1L << (SPARSE - 254)) | (1L << (SWITCH - 254)) | (1L << (TRAN - 254)) | (1L << (TRANCOUNT - 254)))) != 0) || ((((_la - 324)) & ~0x3f) == 0 && ((1L << (_la - 324)) & ((1L << (CONTROL - 324)) | (1L << (CONCAT - 324)) | (1L << (TAKE - 324)) | (1L << (OWNERSHIP - 324)) | (1L << (DEFINITION - 324)) | (1L << (APPLICATION - 324)) | (1L << (ASSEMBLY - 324)) | (1L << (SYMMETRIC - 324)) | (1L << (ASYMMETRIC - 324)) | (1L << (SERVER - 324)) | (1L << (RECEIVE - 324)) | (1L << (CHANGE - 324)) | (1L << (TRACE - 324)) | (1L << (TRACKING - 324)) | (1L << (RESOURCES - 324)) | (1L << (SETTINGS - 324)) | (1L << (STATE - 324)) | (1L << (AVAILABILITY - 324)) | (1L << (CREDENTIAL - 324)) | (1L << (ENDPOINT - 324)) | (1L << (EVENT - 324)) | (1L << (NOTIFICATION - 324)) | (1L << (LINKED - 324)) | (1L << (AUDIT - 324)) | (1L << (DDL - 324)) | (1L << (XML - 324)) | (1L << (IMPERSONATE - 324)) | (1L << (SECURABLES - 324)) | (1L << (AUTHENTICATE - 324)) | (1L << (EXTERNAL - 324)) | (1L << (ACCESS - 324)) | (1L << (ADMINISTER - 324)) | (1L << (BULK - 324)) | (1L << (OPERATIONS - 324)) | (1L << (UNSAFE - 324)) | (1L << (SHUTDOWN - 324)) | (1L << (SCOPED - 324)) | (1L << (CONFIGURATION - 324)) | (1L << (DATASPACE - 324)) | (1L << (SERVICE - 324)) | (1L << (CERTIFICATE - 324)) | (1L << (CONTRACT - 324)) | (1L << (ENCRYPTION - 324)) | (1L << (MASTER - 324)) | (1L << (DATA - 324)) | (1L << (SOURCE - 324)) | (1L << (FILE - 324)) | (1L << (FORMAT - 324)) | (1L << (LIBRARY - 324)) | (1L << (FULLTEXT - 324)) | (1L << (MASK - 324)) | (1L << (UNMASK - 324)) | (1L << (MESSAGE - 324)) | (1L << (REMOTE - 324)) | (1L << (BINDING - 324)) | (1L << (ROUTE - 324)) | (1L << (SECURITY - 324)) | (1L << (POLICY - 324)) | (1L << (AGGREGATE - 324)) | (1L << (QUEUE - 324)) | (1L << (RULE - 324)) | (1L << (SYNONYM - 324)) | (1L << (COLLECTION - 324)) | (1L << (SCRIPT - 324)))) != 0) || ((((_la - 388)) & ~0x3f) == 0 && ((1L << (_la - 388)) & ((1L << (KILL - 388)) | (1L << (BACKUP - 388)) | (1L << (LOG - 388)) | (1L << (SHOWPLAN - 388)) | (1L << (SUBSCRIBE - 388)) | (1L << (QUERY - 388)) | (1L << (NOTIFICATIONS - 388)) | (1L << (CHECKPOINT - 388)) | (1L << (SEQUENCE - 388)) | (1L << (ABORT_AFTER_WAIT - 388)) | (1L << (ALLOW_PAGE_LOCKS - 388)) | (1L << (ALLOW_ROW_LOCKS - 388)) | (1L << (ALL_SPARSE_COLUMNS - 388)) | (1L << (BUCKET_COUNT - 388)) | (1L << (COLUMNSTORE_ARCHIVE - 388)) | (1L << (COLUMN_ENCRYPTION_KEY - 388)) | (1L << (COLUMN_SET - 388)) | (1L << (COMPRESSION_DELAY - 388)) | (1L << (DATABASE_DEAULT - 388)) | (1L << (DATA_COMPRESSION - 388)) | (1L << (DATA_CONSISTENCY_CHECK - 388)) | (1L << (ENCRYPTION_TYPE - 388)) | (1L << (SYSTEM_TIME - 388)) | (1L << (SYSTEM_VERSIONING - 388)) | (1L << (TEXTIMAGE_ON - 388)) | (1L << (WAIT_AT_LOW_PRIORITY - 388)) | (1L << (STATISTICS_INCREMENTAL - 388)) | (1L << (STATISTICS_NORECOMPUTE - 388)) | (1L << (ROUND_ROBIN - 388)) | (1L << (SCHEMA_AND_DATA - 388)) | (1L << (SCHEMA_ONLY - 388)) | (1L << (SORT_IN_TEMPDB - 388)) | (1L << (IGNORE_DUP_KEY - 388)) | (1L << (IMPLICIT_TRANSACTIONS - 388)) | (1L << (MAX_DURATION - 388)) | (1L << (MEMORY_OPTIMIZED - 388)) | (1L << (MIGRATION_STATE - 388)) | (1L << (PAD_INDEX - 388)) | (1L << (REMOTE_DATA_ARCHIVE - 388)) | (1L << (FILESTREAM_ON - 388)) | (1L << (FILETABLE_COLLATE_FILENAME - 388)) | (1L << (FILETABLE_DIRECTORY - 388)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 388)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 388)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 388)) | (1L << (FILTER_PREDICATE - 388)) | (1L << (HISTORY_RETENTION_PERIOD - 388)) | (1L << (HISTORY_TABLE - 388)) | (1L << (LOCK_ESCALATION - 388)) | (1L << (DROP_EXISTING - 388)) | (1L << (ROW_NUMBER - 388)) | (1L << (FIRST - 388)) | (1L << (DATETIME2 - 388)))) != 0) || ((((_la - 458)) & ~0x3f) == 0 && ((1L << (_la - 458)) & ((1L << (OUTPUT - 458)) | (1L << (INSERTED - 458)) | (1L << (DELETED - 458)) | (1L << (FILENAME - 458)) | (1L << (SIZE - 458)) | (1L << (MAXSIZE - 458)) | (1L << (FILEGROWTH - 458)) | (1L << (UNLIMITED - 458)) | (1L << (KB - 458)) | (1L << (MB - 458)) | (1L << (GB - 458)) | (1L << (TB - 458)) | (1L << (CONTAINS - 458)) | (1L << (MEMORY_OPTIMIZED_DATA - 458)) | (1L << (FILEGROUP - 458)) | (1L << (NON_TRANSACTED_ACCESS - 458)) | (1L << (DB_CHAINING - 458)) | (1L << (TRUSTWORTHY - 458)) | (1L << (FORWARD_ONLY - 458)) | (1L << (KEYSET - 458)) | (1L << (FAST_FORWARD - 458)) | (1L << (SCROLL_LOCKS - 458)) | (1L << (OPTIMISTIC - 458)) | (1L << (TYPE_WARNING - 458)) | (1L << (SCHEMABINDING - 458)))) != 0) || ((((_la - 522)) & ~0x3f) == 0 && ((1L << (_la - 522)) & ((1L << (CALLER - 522)) | (1L << (OWNER - 522)) | (1L << (SNAPSHOT - 522)) | (1L << (REPEATABLE - 522)) | (1L << (SERIALIZABLE - 522)) | (1L << (NATIVE_COMPILATION - 522)) | (1L << (VIEW_METADATA - 522)) | (1L << (INSTEAD - 522)) | (1L << (APPEND - 522)) | (1L << (INCREMENT - 522)) | (1L << (CACHE - 522)) | (1L << (MINVALUE - 522)) | (1L << (MAXVALUE - 522)) | (1L << (RESTART - 522)) | (1L << (LOB_COMPACTION - 522)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 522)) | (1L << (REORGANIZE - 522)) | (1L << (RESUME - 522)) | (1L << (PAUSE - 522)) | (1L << (ABORT - 522)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 522)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 522)) | (1L << (IMMEDIATE - 522)) | (1L << (NO_WAIT - 522)) | (1L << (TARGET_RECOVERY_TIME - 522)) | (1L << (SECONDS - 522)) | (1L << (HONOR_BROKER_PRIORITY - 522)) | (1L << (ERROR_BROKER_CONVERSATIONS - 522)) | (1L << (NEW_BROKER - 522)) | (1L << (DISABLE_BROKER - 522)) | (1L << (ENABLE_BROKER - 522)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 522)) | (1L << (READ_COMMITTED_SNAPSHOT - 522)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 522)) | (1L << (RECURSIVE_TRIGGERS - 522)) | (1L << (QUOTED_IDENTIFIER - 522)) | (1L << (NUMERIC_ROUNDABORT - 522)) | (1L << (CONCAT_NULL_YIELDS_NULL - 522)) | (1L << (COMPATIBILITY_LEVEL - 522)) | (1L << (ARITHABORT - 522)) | (1L << (ANSI_WARNINGS - 522)) | (1L << (ANSI_PADDING - 522)) | (1L << (ANSI_NULLS - 522)))) != 0) || ((((_la - 586)) & ~0x3f) == 0 && ((1L << (_la - 586)) & ((1L << (ANSI_NULL_DEFAULT - 586)) | (1L << (PAGE_VERIFY - 586)) | (1L << (CHECKSUM - 586)) | (1L << (TORN_PAGE_DETECTION - 586)) | (1L << (BULK_LOGGED - 586)) | (1L << (RECOVERY - 586)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 586)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 586)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 586)) | (1L << (EXECUTION_COUNT - 586)) | (1L << (QUERY_CAPTURE_POLICY - 586)) | (1L << (WAIT_STATS_CAPTURE_MODE - 586)) | (1L << (MAX_PLANS_PER_QUERY - 586)) | (1L << (QUERY_CAPTURE_MODE - 586)) | (1L << (SIZE_BASED_CLEANUP_MODE - 586)) | (1L << (INTERVAL_LENGTH_MINUTES - 586)) | (1L << (MAX_STORAGE_SIZE_MB - 586)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 586)) | (1L << (CLEANUP_POLICY - 586)) | (1L << (CUSTOM - 586)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 586)) | (1L << (OPERATION_MODE - 586)) | (1L << (QUERY_STORE - 586)) | (1L << (CURSOR_DEFAULT - 586)) | (1L << (GLOBAL - 586)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 586)) | (1L << (HOURS - 586)) | (1L << (CHANGE_RETENTION - 586)) | (1L << (AUTO_CLEANUP - 586)) | (1L << (CHANGE_TRACKING - 586)) | (1L << (AUTOMATIC_TUNING - 586)) | (1L << (FORCE_LAST_GOOD_PLAN - 586)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 586)) | (1L << (AUTO_UPDATE_STATISTICS - 586)) | (1L << (AUTO_SHRINK - 586)) | (1L << (AUTO_CREATE_STATISTICS - 586)) | (1L << (INCREMENTAL - 586)) | (1L << (AUTO_CLOSE - 586)) | (1L << (DATA_RETENTION - 586)) | (1L << (TEMPORAL_HISTORY_RETENTION - 586)) | (1L << (EDITION - 586)) | (1L << (MIXED_PAGE_ALLOCATION - 586)) | (1L << (DISABLED - 586)) | (1L << (ALLOWED - 586)) | (1L << (HADR - 586)) | (1L << (MULTI_USER - 586)) | (1L << (RESTRICTED_USER - 586)) | (1L << (SINGLE_USER - 586)) | (1L << (OFFLINE - 586)) | (1L << (EMERGENCY - 586)) | (1L << (SUSPEND - 586)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 586)) | (1L << (ELASTIC_POOL - 586)) | (1L << (SERVICE_OBJECTIVE - 586)) | (1L << (DATABASE_NAME - 586)) | (1L << (ALLOW_CONNECTIONS - 586)) | (1L << (GEO - 586)) | (1L << (NAMED - 586)) | (1L << (DATEFIRST - 586)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 586)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 586)) | (1L << (SECONDARY - 586)) | (1L << (FAILOVER - 586)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 586)))) != 0) || ((((_la - 650)) & ~0x3f) == 0 && ((1L << (_la - 650)) & ((1L << (DEFAULT_LANGUAGE - 650)) | (1L << (INLINE - 650)) | (1L << (NESTED_TRIGGERS - 650)) | (1L << (TRANSFORM_NOISE_WORDS - 650)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 650)) | (1L << (PERSISTENT_LOG_BUFFER - 650)) | (1L << (DIRECTORY_NAME - 650)) | (1L << (DATEFORMAT - 650)) | (1L << (DELAYED_DURABILITY - 650)) | (1L << (AUTHORIZATION - 650)) | (1L << (TRANSFER - 650)) | (1L << (PROVIDER - 650)) | (1L << (SEARCH - 650)) | (1L << (MEMBER - 650)) | (1L << (IDENTIFIER_ - 650)) | (1L << (DELIMITED_IDENTIFIER_ - 650)))) != 0)) {
26589 				{
26590 				{
26591 				setState(3731);
26592 				variableName();
26593 				setState(3733);
26594 				_errHandler.sync(this);
26595 				_la = _input.LA(1);
26596 				if (_la==AS) {
26597 					{
26598 					setState(3732);
26599 					match(AS);
26600 					}
26601 				}
26602 
26603 				setState(3738);
26604 				_errHandler.sync(this);
26605 				switch ( getInterpreter().adaptivePredict(_input,373,_ctx) ) {
26606 				case 1:
26607 					{
26608 					setState(3735);
26609 					owner();
26610 					setState(3736);
26611 					match(DOT_);
26612 					}
26613 					break;
26614 				}
26615 				setState(3740);
26616 				dataType();
26617 				setState(3743);
26618 				_errHandler.sync(this);
26619 				_la = _input.LA(1);
26620 				if (_la==EQ_) {
26621 					{
26622 					setState(3741);
26623 					match(EQ_);
26624 					setState(3742);
26625 					ignoredIdentifier();
26626 					}
26627 				}
26628 
26629 				setState(3746);
26630 				_errHandler.sync(this);
26631 				_la = _input.LA(1);
26632 				if (_la==READONLY) {
26633 					{
26634 					setState(3745);
26635 					match(READONLY);
26636 					}
26637 				}
26638 
26639 				}
26640 				}
26641 				setState(3752);
26642 				_errHandler.sync(this);
26643 				_la = _input.LA(1);
26644 			}
26645 			setState(3753);
26646 			match(RP_);
26647 			}
26648 		}
26649 		catch (RecognitionException re) {
26650 			_localctx.exception = re;
26651 			_errHandler.reportError(this, re);
26652 			_errHandler.recover(this, re);
26653 		}
26654 		finally {
26655 			exitRule();
26656 		}
26657 		return _localctx;
26658 	}
26659 
26660 	public static class FuncReturnsContext extends ParserRuleContext {
26661 		public FuncScalarReturnContext funcScalarReturn() {
26662 			return getRuleContext(FuncScalarReturnContext.class,0);
26663 		}
26664 		public FuncInlineReturnContext funcInlineReturn() {
26665 			return getRuleContext(FuncInlineReturnContext.class,0);
26666 		}
26667 		public FuncMutiReturnContext funcMutiReturn() {
26668 			return getRuleContext(FuncMutiReturnContext.class,0);
26669 		}
26670 		public FuncReturnsContext(ParserRuleContext parent, int invokingState) {
26671 			super(parent, invokingState);
26672 		}
26673 		@Override public int getRuleIndex() { return RULE_funcReturns; }
26674 		@Override
26675 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26676 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncReturns(this);
26677 			else return visitor.visitChildren(this);
26678 		}
26679 	}
26680 
26681 	public final FuncReturnsContext funcReturns() throws RecognitionException {
26682 		FuncReturnsContext _localctx = new FuncReturnsContext(_ctx, getState());
26683 		enterRule(_localctx, 546, RULE_funcReturns);
26684 		try {
26685 			setState(3758);
26686 			_errHandler.sync(this);
26687 			switch ( getInterpreter().adaptivePredict(_input,377,_ctx) ) {
26688 			case 1:
26689 				enterOuterAlt(_localctx, 1);
26690 				{
26691 				setState(3755);
26692 				funcScalarReturn();
26693 				}
26694 				break;
26695 			case 2:
26696 				enterOuterAlt(_localctx, 2);
26697 				{
26698 				setState(3756);
26699 				funcInlineReturn();
26700 				}
26701 				break;
26702 			case 3:
26703 				enterOuterAlt(_localctx, 3);
26704 				{
26705 				setState(3757);
26706 				funcMutiReturn();
26707 				}
26708 				break;
26709 			}
26710 		}
26711 		catch (RecognitionException re) {
26712 			_localctx.exception = re;
26713 			_errHandler.reportError(this, re);
26714 			_errHandler.recover(this, re);
26715 		}
26716 		finally {
26717 			exitRule();
26718 		}
26719 		return _localctx;
26720 	}
26721 
26722 	public static class FuncMutiReturnContext extends ParserRuleContext {
26723 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
26724 		public VariableNameContext variableName() {
26725 			return getRuleContext(VariableNameContext.class,0);
26726 		}
26727 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
26728 		public CreateTableDefinitionsContext createTableDefinitions() {
26729 			return getRuleContext(CreateTableDefinitionsContext.class,0);
26730 		}
26731 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
26732 		public CompoundStatementContext compoundStatement() {
26733 			return getRuleContext(CompoundStatementContext.class,0);
26734 		}
26735 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
26736 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
26737 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
26738 		public List<FunctionOptionContext> functionOption() {
26739 			return getRuleContexts(FunctionOptionContext.class);
26740 		}
26741 		public FunctionOptionContext functionOption(int i) {
26742 			return getRuleContext(FunctionOptionContext.class,i);
26743 		}
26744 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
26745 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26746 		public TerminalNode COMMA_(int i) {
26747 			return getToken(SQLServerStatementParser.COMMA_, i);
26748 		}
26749 		public FuncMutiReturnContext(ParserRuleContext parent, int invokingState) {
26750 			super(parent, invokingState);
26751 		}
26752 		@Override public int getRuleIndex() { return RULE_funcMutiReturn; }
26753 		@Override
26754 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26755 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncMutiReturn(this);
26756 			else return visitor.visitChildren(this);
26757 		}
26758 	}
26759 
26760 	public final FuncMutiReturnContext funcMutiReturn() throws RecognitionException {
26761 		FuncMutiReturnContext _localctx = new FuncMutiReturnContext(_ctx, getState());
26762 		enterRule(_localctx, 548, RULE_funcMutiReturn);
26763 		int _la;
26764 		try {
26765 			enterOuterAlt(_localctx, 1);
26766 			{
26767 			setState(3760);
26768 			match(RETURNS);
26769 			setState(3761);
26770 			variableName();
26771 			setState(3762);
26772 			match(TABLE);
26773 			setState(3763);
26774 			createTableDefinitions();
26775 			setState(3773);
26776 			_errHandler.sync(this);
26777 			_la = _input.LA(1);
26778 			if (_la==WITH) {
26779 				{
26780 				setState(3764);
26781 				match(WITH);
26782 				setState(3765);
26783 				functionOption();
26784 				setState(3770);
26785 				_errHandler.sync(this);
26786 				_la = _input.LA(1);
26787 				while (_la==COMMA_) {
26788 					{
26789 					{
26790 					setState(3766);
26791 					match(COMMA_);
26792 					setState(3767);
26793 					functionOption();
26794 					}
26795 					}
26796 					setState(3772);
26797 					_errHandler.sync(this);
26798 					_la = _input.LA(1);
26799 				}
26800 				}
26801 			}
26802 
26803 			setState(3776);
26804 			_errHandler.sync(this);
26805 			_la = _input.LA(1);
26806 			if (_la==AS) {
26807 				{
26808 				setState(3775);
26809 				match(AS);
26810 				}
26811 			}
26812 
26813 			setState(3778);
26814 			match(BEGIN);
26815 			setState(3779);
26816 			compoundStatement();
26817 			setState(3780);
26818 			match(RETURN);
26819 			setState(3781);
26820 			match(END);
26821 			}
26822 		}
26823 		catch (RecognitionException re) {
26824 			_localctx.exception = re;
26825 			_errHandler.reportError(this, re);
26826 			_errHandler.recover(this, re);
26827 		}
26828 		finally {
26829 			exitRule();
26830 		}
26831 		return _localctx;
26832 	}
26833 
26834 	public static class FuncInlineReturnContext extends ParserRuleContext {
26835 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
26836 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
26837 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
26838 		public SelectContext select() {
26839 			return getRuleContext(SelectContext.class,0);
26840 		}
26841 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
26842 		public List<FunctionOptionContext> functionOption() {
26843 			return getRuleContexts(FunctionOptionContext.class);
26844 		}
26845 		public FunctionOptionContext functionOption(int i) {
26846 			return getRuleContext(FunctionOptionContext.class,i);
26847 		}
26848 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
26849 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
26850 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
26851 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26852 		public TerminalNode COMMA_(int i) {
26853 			return getToken(SQLServerStatementParser.COMMA_, i);
26854 		}
26855 		public FuncInlineReturnContext(ParserRuleContext parent, int invokingState) {
26856 			super(parent, invokingState);
26857 		}
26858 		@Override public int getRuleIndex() { return RULE_funcInlineReturn; }
26859 		@Override
26860 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26861 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncInlineReturn(this);
26862 			else return visitor.visitChildren(this);
26863 		}
26864 	}
26865 
26866 	public final FuncInlineReturnContext funcInlineReturn() throws RecognitionException {
26867 		FuncInlineReturnContext _localctx = new FuncInlineReturnContext(_ctx, getState());
26868 		enterRule(_localctx, 550, RULE_funcInlineReturn);
26869 		int _la;
26870 		try {
26871 			enterOuterAlt(_localctx, 1);
26872 			{
26873 			setState(3783);
26874 			match(RETURNS);
26875 			setState(3784);
26876 			match(TABLE);
26877 			setState(3794);
26878 			_errHandler.sync(this);
26879 			_la = _input.LA(1);
26880 			if (_la==WITH) {
26881 				{
26882 				setState(3785);
26883 				match(WITH);
26884 				setState(3786);
26885 				functionOption();
26886 				setState(3791);
26887 				_errHandler.sync(this);
26888 				_la = _input.LA(1);
26889 				while (_la==COMMA_) {
26890 					{
26891 					{
26892 					setState(3787);
26893 					match(COMMA_);
26894 					setState(3788);
26895 					functionOption();
26896 					}
26897 					}
26898 					setState(3793);
26899 					_errHandler.sync(this);
26900 					_la = _input.LA(1);
26901 				}
26902 				}
26903 			}
26904 
26905 			setState(3797);
26906 			_errHandler.sync(this);
26907 			_la = _input.LA(1);
26908 			if (_la==AS) {
26909 				{
26910 				setState(3796);
26911 				match(AS);
26912 				}
26913 			}
26914 
26915 			setState(3799);
26916 			match(RETURN);
26917 			setState(3801);
26918 			_errHandler.sync(this);
26919 			_la = _input.LA(1);
26920 			if (_la==LP_) {
26921 				{
26922 				setState(3800);
26923 				match(LP_);
26924 				}
26925 			}
26926 
26927 			setState(3803);
26928 			select();
26929 			setState(3805);
26930 			_errHandler.sync(this);
26931 			_la = _input.LA(1);
26932 			if (_la==RP_) {
26933 				{
26934 				setState(3804);
26935 				match(RP_);
26936 				}
26937 			}
26938 
26939 			}
26940 		}
26941 		catch (RecognitionException re) {
26942 			_localctx.exception = re;
26943 			_errHandler.reportError(this, re);
26944 			_errHandler.recover(this, re);
26945 		}
26946 		finally {
26947 			exitRule();
26948 		}
26949 		return _localctx;
26950 	}
26951 
26952 	public static class FuncScalarReturnContext extends ParserRuleContext {
26953 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
26954 		public DataTypeContext dataType() {
26955 			return getRuleContext(DataTypeContext.class,0);
26956 		}
26957 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
26958 		public CompoundStatementContext compoundStatement() {
26959 			return getRuleContext(CompoundStatementContext.class,0);
26960 		}
26961 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
26962 		public ExprContext expr() {
26963 			return getRuleContext(ExprContext.class,0);
26964 		}
26965 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
26966 		public List<FunctionOptionContext> functionOption() {
26967 			return getRuleContexts(FunctionOptionContext.class);
26968 		}
26969 		public FunctionOptionContext functionOption(int i) {
26970 			return getRuleContext(FunctionOptionContext.class,i);
26971 		}
26972 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
26973 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26974 		public TerminalNode COMMA_(int i) {
26975 			return getToken(SQLServerStatementParser.COMMA_, i);
26976 		}
26977 		public FuncScalarReturnContext(ParserRuleContext parent, int invokingState) {
26978 			super(parent, invokingState);
26979 		}
26980 		@Override public int getRuleIndex() { return RULE_funcScalarReturn; }
26981 		@Override
26982 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26983 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncScalarReturn(this);
26984 			else return visitor.visitChildren(this);
26985 		}
26986 	}
26987 
26988 	public final FuncScalarReturnContext funcScalarReturn() throws RecognitionException {
26989 		FuncScalarReturnContext _localctx = new FuncScalarReturnContext(_ctx, getState());
26990 		enterRule(_localctx, 552, RULE_funcScalarReturn);
26991 		int _la;
26992 		try {
26993 			enterOuterAlt(_localctx, 1);
26994 			{
26995 			setState(3807);
26996 			match(RETURNS);
26997 			setState(3808);
26998 			dataType();
26999 			setState(3818);
27000 			_errHandler.sync(this);
27001 			_la = _input.LA(1);
27002 			if (_la==WITH) {
27003 				{
27004 				setState(3809);
27005 				match(WITH);
27006 				setState(3810);
27007 				functionOption();
27008 				setState(3815);
27009 				_errHandler.sync(this);
27010 				_la = _input.LA(1);
27011 				while (_la==COMMA_) {
27012 					{
27013 					{
27014 					setState(3811);
27015 					match(COMMA_);
27016 					setState(3812);
27017 					functionOption();
27018 					}
27019 					}
27020 					setState(3817);
27021 					_errHandler.sync(this);
27022 					_la = _input.LA(1);
27023 				}
27024 				}
27025 			}
27026 
27027 			setState(3821);
27028 			_errHandler.sync(this);
27029 			_la = _input.LA(1);
27030 			if (_la==AS) {
27031 				{
27032 				setState(3820);
27033 				match(AS);
27034 				}
27035 			}
27036 
27037 			setState(3823);
27038 			match(BEGIN);
27039 			setState(3824);
27040 			compoundStatement();
27041 			setState(3825);
27042 			match(RETURN);
27043 			setState(3826);
27044 			expr(0);
27045 			}
27046 		}
27047 		catch (RecognitionException re) {
27048 			_localctx.exception = re;
27049 			_errHandler.reportError(this, re);
27050 			_errHandler.recover(this, re);
27051 		}
27052 		finally {
27053 			exitRule();
27054 		}
27055 		return _localctx;
27056 	}
27057 
27058 	public static class TableTypeDefinitionContext extends ParserRuleContext {
27059 		public ColumnDefinitionContext columnDefinition() {
27060 			return getRuleContext(ColumnDefinitionContext.class,0);
27061 		}
27062 		public ColumnConstraintContext columnConstraint() {
27063 			return getRuleContext(ColumnConstraintContext.class,0);
27064 		}
27065 		public ComputedColumnDefinitionContext computedColumnDefinition() {
27066 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
27067 		}
27068 		public List<TableConstraintContext> tableConstraint() {
27069 			return getRuleContexts(TableConstraintContext.class);
27070 		}
27071 		public TableConstraintContext tableConstraint(int i) {
27072 			return getRuleContext(TableConstraintContext.class,i);
27073 		}
27074 		public TableTypeDefinitionContext(ParserRuleContext parent, int invokingState) {
27075 			super(parent, invokingState);
27076 		}
27077 		@Override public int getRuleIndex() { return RULE_tableTypeDefinition; }
27078 		@Override
27079 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27080 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableTypeDefinition(this);
27081 			else return visitor.visitChildren(this);
27082 		}
27083 	}
27084 
27085 	public final TableTypeDefinitionContext tableTypeDefinition() throws RecognitionException {
27086 		TableTypeDefinitionContext _localctx = new TableTypeDefinitionContext(_ctx, getState());
27087 		enterRule(_localctx, 554, RULE_tableTypeDefinition);
27088 		int _la;
27089 		try {
27090 			enterOuterAlt(_localctx, 1);
27091 			{
27092 			setState(3832);
27093 			_errHandler.sync(this);
27094 			switch ( getInterpreter().adaptivePredict(_input,389,_ctx) ) {
27095 			case 1:
27096 				{
27097 				setState(3828);
27098 				columnDefinition();
27099 				setState(3829);
27100 				columnConstraint();
27101 				}
27102 				break;
27103 			case 2:
27104 				{
27105 				setState(3831);
27106 				computedColumnDefinition();
27107 				}
27108 				break;
27109 			}
27110 			setState(3837);
27111 			_errHandler.sync(this);
27112 			_la = _input.LA(1);
27113 			while (((((_la - 31)) & ~0x3f) == 0 && ((1L << (_la - 31)) & ((1L << (LP_ - 31)) | (1L << (CONSTRAINT - 31)) | (1L << (PRIMARY - 31)) | (1L << (UNIQUE - 31)) | (1L << (FOREIGN - 31)) | (1L << (KEY - 31)))) != 0) || _la==CHECK) {
27114 				{
27115 				{
27116 				setState(3834);
27117 				tableConstraint();
27118 				}
27119 				}
27120 				setState(3839);
27121 				_errHandler.sync(this);
27122 				_la = _input.LA(1);
27123 			}
27124 			}
27125 		}
27126 		catch (RecognitionException re) {
27127 			_localctx.exception = re;
27128 			_errHandler.reportError(this, re);
27129 			_errHandler.recover(this, re);
27130 		}
27131 		finally {
27132 			exitRule();
27133 		}
27134 		return _localctx;
27135 	}
27136 
27137 	public static class CompoundStatementContext extends ParserRuleContext {
27138 		public List<ValidStatementContext> validStatement() {
27139 			return getRuleContexts(ValidStatementContext.class);
27140 		}
27141 		public ValidStatementContext validStatement(int i) {
27142 			return getRuleContext(ValidStatementContext.class,i);
27143 		}
27144 		public CompoundStatementContext(ParserRuleContext parent, int invokingState) {
27145 			super(parent, invokingState);
27146 		}
27147 		@Override public int getRuleIndex() { return RULE_compoundStatement; }
27148 		@Override
27149 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27150 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompoundStatement(this);
27151 			else return visitor.visitChildren(this);
27152 		}
27153 	}
27154 
27155 	public final CompoundStatementContext compoundStatement() throws RecognitionException {
27156 		CompoundStatementContext _localctx = new CompoundStatementContext(_ctx, getState());
27157 		enterRule(_localctx, 556, RULE_compoundStatement);
27158 		int _la;
27159 		try {
27160 			enterOuterAlt(_localctx, 1);
27161 			{
27162 			setState(3843);
27163 			_errHandler.sync(this);
27164 			_la = _input.LA(1);
27165 			while (((((_la - 46)) & ~0x3f) == 0 && ((1L << (_la - 46)) & ((1L << (SELECT - 46)) | (1L << (INSERT - 46)) | (1L << (UPDATE - 46)) | (1L << (DELETE - 46)) | (1L << (CREATE - 46)) | (1L << (ALTER - 46)) | (1L << (DROP - 46)) | (1L << (TRUNCATE - 46)) | (1L << (SET - 46)) | (1L << (WITH - 46)))) != 0) || _la==DECLARE) {
27166 				{
27167 				{
27168 				setState(3840);
27169 				validStatement();
27170 				}
27171 				}
27172 				setState(3845);
27173 				_errHandler.sync(this);
27174 				_la = _input.LA(1);
27175 			}
27176 			}
27177 		}
27178 		catch (RecognitionException re) {
27179 			_localctx.exception = re;
27180 			_errHandler.reportError(this, re);
27181 			_errHandler.recover(this, re);
27182 		}
27183 		finally {
27184 			exitRule();
27185 		}
27186 		return _localctx;
27187 	}
27188 
27189 	public static class FunctionOptionContext extends ParserRuleContext {
27190 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
27191 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
27192 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
27193 		public List<TerminalNode> NULL() { return getTokens(SQLServerStatementParser.NULL); }
27194 		public TerminalNode NULL(int i) {
27195 			return getToken(SQLServerStatementParser.NULL, i);
27196 		}
27197 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
27198 		public TerminalNode INPUT() { return getToken(SQLServerStatementParser.INPUT, 0); }
27199 		public TerminalNode CALLED() { return getToken(SQLServerStatementParser.CALLED, 0); }
27200 		public ExecuteAsClauseContext executeAsClause() {
27201 			return getRuleContext(ExecuteAsClauseContext.class,0);
27202 		}
27203 		public TerminalNode INLINE() { return getToken(SQLServerStatementParser.INLINE, 0); }
27204 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
27205 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
27206 		public FunctionOptionContext(ParserRuleContext parent, int invokingState) {
27207 			super(parent, invokingState);
27208 		}
27209 		@Override public int getRuleIndex() { return RULE_functionOption; }
27210 		@Override
27211 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27212 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionOption(this);
27213 			else return visitor.visitChildren(this);
27214 		}
27215 	}
27216 
27217 	public final FunctionOptionContext functionOption() throws RecognitionException {
27218 		FunctionOptionContext _localctx = new FunctionOptionContext(_ctx, getState());
27219 		enterRule(_localctx, 558, RULE_functionOption);
27220 		int _la;
27221 		try {
27222 			setState(3871);
27223 			_errHandler.sync(this);
27224 			switch ( getInterpreter().adaptivePredict(_input,397,_ctx) ) {
27225 			case 1:
27226 				enterOuterAlt(_localctx, 1);
27227 				{
27228 				setState(3847);
27229 				_errHandler.sync(this);
27230 				_la = _input.LA(1);
27231 				if (_la==ENCRYPTION) {
27232 					{
27233 					setState(3846);
27234 					match(ENCRYPTION);
27235 					}
27236 				}
27237 
27238 				}
27239 				break;
27240 			case 2:
27241 				enterOuterAlt(_localctx, 2);
27242 				{
27243 				setState(3850);
27244 				_errHandler.sync(this);
27245 				_la = _input.LA(1);
27246 				if (_la==SCHEMABINDING) {
27247 					{
27248 					setState(3849);
27249 					match(SCHEMABINDING);
27250 					}
27251 				}
27252 
27253 				}
27254 				break;
27255 			case 3:
27256 				enterOuterAlt(_localctx, 3);
27257 				{
27258 				setState(3861);
27259 				_errHandler.sync(this);
27260 				switch (_input.LA(1)) {
27261 				case RETURNS:
27262 					{
27263 					setState(3852);
27264 					match(RETURNS);
27265 					setState(3853);
27266 					match(NULL);
27267 					setState(3854);
27268 					match(ON);
27269 					setState(3855);
27270 					match(NULL);
27271 					setState(3856);
27272 					match(INPUT);
27273 					}
27274 					break;
27275 				case CALLED:
27276 					{
27277 					setState(3857);
27278 					match(CALLED);
27279 					setState(3858);
27280 					match(ON);
27281 					setState(3859);
27282 					match(NULL);
27283 					setState(3860);
27284 					match(INPUT);
27285 					}
27286 					break;
27287 				case COMMA_:
27288 				case AS:
27289 				case BEGIN:
27290 				case RETURN:
27291 					break;
27292 				default:
27293 					break;
27294 				}
27295 				}
27296 				break;
27297 			case 4:
27298 				enterOuterAlt(_localctx, 4);
27299 				{
27300 				setState(3864);
27301 				_errHandler.sync(this);
27302 				_la = _input.LA(1);
27303 				if (_la==EXECUTE || _la==EXEC) {
27304 					{
27305 					setState(3863);
27306 					executeAsClause();
27307 					}
27308 				}
27309 
27310 				}
27311 				break;
27312 			case 5:
27313 				enterOuterAlt(_localctx, 5);
27314 				{
27315 				setState(3869);
27316 				_errHandler.sync(this);
27317 				_la = _input.LA(1);
27318 				if (_la==INLINE) {
27319 					{
27320 					setState(3866);
27321 					match(INLINE);
27322 					setState(3867);
27323 					match(EQ_);
27324 					setState(3868);
27325 					_la = _input.LA(1);
27326 					if ( !(_la==ON || _la==OFF) ) {
27327 					_errHandler.recoverInline(this);
27328 					}
27329 					else {
27330 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27331 						_errHandler.reportMatch(this);
27332 						consume();
27333 					}
27334 					}
27335 				}
27336 
27337 				}
27338 				break;
27339 			}
27340 		}
27341 		catch (RecognitionException re) {
27342 			_localctx.exception = re;
27343 			_errHandler.reportError(this, re);
27344 			_errHandler.recover(this, re);
27345 		}
27346 		finally {
27347 			exitRule();
27348 		}
27349 		return _localctx;
27350 	}
27351 
27352 	public static class ValidStatementContext extends ParserRuleContext {
27353 		public CreateTableContext createTable() {
27354 			return getRuleContext(CreateTableContext.class,0);
27355 		}
27356 		public AlterTableContext alterTable() {
27357 			return getRuleContext(AlterTableContext.class,0);
27358 		}
27359 		public DropTableContext dropTable() {
27360 			return getRuleContext(DropTableContext.class,0);
27361 		}
27362 		public TruncateTableContext truncateTable() {
27363 			return getRuleContext(TruncateTableContext.class,0);
27364 		}
27365 		public InsertContext insert() {
27366 			return getRuleContext(InsertContext.class,0);
27367 		}
27368 		public UpdateContext update() {
27369 			return getRuleContext(UpdateContext.class,0);
27370 		}
27371 		public DeleteContext delete() {
27372 			return getRuleContext(DeleteContext.class,0);
27373 		}
27374 		public SelectContext select() {
27375 			return getRuleContext(SelectContext.class,0);
27376 		}
27377 		public SetVariableContext setVariable() {
27378 			return getRuleContext(SetVariableContext.class,0);
27379 		}
27380 		public DeclareVariableContext declareVariable() {
27381 			return getRuleContext(DeclareVariableContext.class,0);
27382 		}
27383 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
27384 		public ValidStatementContext(ParserRuleContext parent, int invokingState) {
27385 			super(parent, invokingState);
27386 		}
27387 		@Override public int getRuleIndex() { return RULE_validStatement; }
27388 		@Override
27389 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27390 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitValidStatement(this);
27391 			else return visitor.visitChildren(this);
27392 		}
27393 	}
27394 
27395 	public final ValidStatementContext validStatement() throws RecognitionException {
27396 		ValidStatementContext _localctx = new ValidStatementContext(_ctx, getState());
27397 		enterRule(_localctx, 560, RULE_validStatement);
27398 		try {
27399 			enterOuterAlt(_localctx, 1);
27400 			{
27401 			setState(3883);
27402 			_errHandler.sync(this);
27403 			switch ( getInterpreter().adaptivePredict(_input,398,_ctx) ) {
27404 			case 1:
27405 				{
27406 				setState(3873);
27407 				createTable();
27408 				}
27409 				break;
27410 			case 2:
27411 				{
27412 				setState(3874);
27413 				alterTable();
27414 				}
27415 				break;
27416 			case 3:
27417 				{
27418 				setState(3875);
27419 				dropTable();
27420 				}
27421 				break;
27422 			case 4:
27423 				{
27424 				setState(3876);
27425 				truncateTable();
27426 				}
27427 				break;
27428 			case 5:
27429 				{
27430 				setState(3877);
27431 				insert();
27432 				}
27433 				break;
27434 			case 6:
27435 				{
27436 				setState(3878);
27437 				update();
27438 				}
27439 				break;
27440 			case 7:
27441 				{
27442 				setState(3879);
27443 				delete();
27444 				}
27445 				break;
27446 			case 8:
27447 				{
27448 				setState(3880);
27449 				select();
27450 				}
27451 				break;
27452 			case 9:
27453 				{
27454 				setState(3881);
27455 				setVariable();
27456 				}
27457 				break;
27458 			case 10:
27459 				{
27460 				setState(3882);
27461 				declareVariable();
27462 				}
27463 				break;
27464 			}
27465 			setState(3886);
27466 			_errHandler.sync(this);
27467 			switch ( getInterpreter().adaptivePredict(_input,399,_ctx) ) {
27468 			case 1:
27469 				{
27470 				setState(3885);
27471 				match(SEMI_);
27472 				}
27473 				break;
27474 			}
27475 			}
27476 		}
27477 		catch (RecognitionException re) {
27478 			_localctx.exception = re;
27479 			_errHandler.reportError(this, re);
27480 			_errHandler.recover(this, re);
27481 		}
27482 		finally {
27483 			exitRule();
27484 		}
27485 		return _localctx;
27486 	}
27487 
27488 	public static class ProcParametersContext extends ParserRuleContext {
27489 		public List<ProcParameterContext> procParameter() {
27490 			return getRuleContexts(ProcParameterContext.class);
27491 		}
27492 		public ProcParameterContext procParameter(int i) {
27493 			return getRuleContext(ProcParameterContext.class,i);
27494 		}
27495 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27496 		public TerminalNode COMMA_(int i) {
27497 			return getToken(SQLServerStatementParser.COMMA_, i);
27498 		}
27499 		public ProcParametersContext(ParserRuleContext parent, int invokingState) {
27500 			super(parent, invokingState);
27501 		}
27502 		@Override public int getRuleIndex() { return RULE_procParameters; }
27503 		@Override
27504 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27505 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcParameters(this);
27506 			else return visitor.visitChildren(this);
27507 		}
27508 	}
27509 
27510 	public final ProcParametersContext procParameters() throws RecognitionException {
27511 		ProcParametersContext _localctx = new ProcParametersContext(_ctx, getState());
27512 		enterRule(_localctx, 562, RULE_procParameters);
27513 		int _la;
27514 		try {
27515 			enterOuterAlt(_localctx, 1);
27516 			{
27517 			setState(3896);
27518 			_errHandler.sync(this);
27519 			_la = _input.LA(1);
27520 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)) | (1L << (ROW - 184)) | (1L << (ROWS - 184)) | (1L << (XOR - 184)) | (1L << (ALWAYS - 184)))) != 0) || ((((_la - 254)) & ~0x3f) == 0 && ((1L << (_la - 254)) & ((1L << (ROLE - 254)) | (1L << (START - 254)) | (1L << (ALGORITHM - 254)) | (1L << (AUTO - 254)) | (1L << (BLOCKERS - 254)) | (1L << (CLUSTERED - 254)) | (1L << (NONCLUSTERED - 254)) | (1L << (COLUMNSTORE - 254)) | (1L << (CONTENT - 254)) | (1L << (YEARS - 254)) | (1L << (MONTHS - 254)) | (1L << (WEEKS - 254)) | (1L << (DAYS - 254)) | (1L << (MINUTES - 254)) | (1L << (DENY - 254)) | (1L << (DETERMINISTIC - 254)) | (1L << (DISTRIBUTION - 254)) | (1L << (DOCUMENT - 254)) | (1L << (DURABILITY - 254)) | (1L << (ENCRYPTED - 254)) | (1L << (FILESTREAM - 254)) | (1L << (FILETABLE - 254)) | (1L << (FILLFACTOR - 254)) | (1L << (FOLLOWING - 254)) | (1L << (HASH - 254)) | (1L << (HEAP - 254)) | (1L << (INBOUND - 254)) | (1L << (OUTBOUND - 254)) | (1L << (UNBOUNDED - 254)) | (1L << (INFINITE - 254)) | (1L << (LOGIN - 254)) | (1L << (MASKED - 254)) | (1L << (MAXDOP - 254)) | (1L << (MOVE - 254)) | (1L << (NOCHECK - 254)) | (1L << (OBJECT - 254)) | (1L << (ONLINE - 254)) | (1L << (OVER - 254)) | (1L << (PAGE - 254)) | (1L << (PAUSED - 254)) | (1L << (PERIOD - 254)) | (1L << (PERSISTED - 254)) | (1L << (PRECEDING - 254)) | (1L << (RANDOMIZED - 254)) | (1L << (RANGE - 254)) | (1L << (REBUILD - 254)) | (1L << (REPLICATE - 254)) | (1L << (REPLICATION - 254)) | (1L << (RESUMABLE - 254)) | (1L << (ROWGUIDCOL - 254)) | (1L << (SAVE - 254)) | (1L << (SELF - 254)) | (1L << (SPARSE - 254)) | (1L << (SWITCH - 254)) | (1L << (TRAN - 254)) | (1L << (TRANCOUNT - 254)))) != 0) || ((((_la - 324)) & ~0x3f) == 0 && ((1L << (_la - 324)) & ((1L << (CONTROL - 324)) | (1L << (CONCAT - 324)) | (1L << (TAKE - 324)) | (1L << (OWNERSHIP - 324)) | (1L << (DEFINITION - 324)) | (1L << (APPLICATION - 324)) | (1L << (ASSEMBLY - 324)) | (1L << (SYMMETRIC - 324)) | (1L << (ASYMMETRIC - 324)) | (1L << (SERVER - 324)) | (1L << (RECEIVE - 324)) | (1L << (CHANGE - 324)) | (1L << (TRACE - 324)) | (1L << (TRACKING - 324)) | (1L << (RESOURCES - 324)) | (1L << (SETTINGS - 324)) | (1L << (STATE - 324)) | (1L << (AVAILABILITY - 324)) | (1L << (CREDENTIAL - 324)) | (1L << (ENDPOINT - 324)) | (1L << (EVENT - 324)) | (1L << (NOTIFICATION - 324)) | (1L << (LINKED - 324)) | (1L << (AUDIT - 324)) | (1L << (DDL - 324)) | (1L << (XML - 324)) | (1L << (IMPERSONATE - 324)) | (1L << (SECURABLES - 324)) | (1L << (AUTHENTICATE - 324)) | (1L << (EXTERNAL - 324)) | (1L << (ACCESS - 324)) | (1L << (ADMINISTER - 324)) | (1L << (BULK - 324)) | (1L << (OPERATIONS - 324)) | (1L << (UNSAFE - 324)) | (1L << (SHUTDOWN - 324)) | (1L << (SCOPED - 324)) | (1L << (CONFIGURATION - 324)) | (1L << (DATASPACE - 324)) | (1L << (SERVICE - 324)) | (1L << (CERTIFICATE - 324)) | (1L << (CONTRACT - 324)) | (1L << (ENCRYPTION - 324)) | (1L << (MASTER - 324)) | (1L << (DATA - 324)) | (1L << (SOURCE - 324)) | (1L << (FILE - 324)) | (1L << (FORMAT - 324)) | (1L << (LIBRARY - 324)) | (1L << (FULLTEXT - 324)) | (1L << (MASK - 324)) | (1L << (UNMASK - 324)) | (1L << (MESSAGE - 324)) | (1L << (REMOTE - 324)) | (1L << (BINDING - 324)) | (1L << (ROUTE - 324)) | (1L << (SECURITY - 324)) | (1L << (POLICY - 324)) | (1L << (AGGREGATE - 324)) | (1L << (QUEUE - 324)) | (1L << (RULE - 324)) | (1L << (SYNONYM - 324)) | (1L << (COLLECTION - 324)) | (1L << (SCRIPT - 324)))) != 0) || ((((_la - 388)) & ~0x3f) == 0 && ((1L << (_la - 388)) & ((1L << (KILL - 388)) | (1L << (BACKUP - 388)) | (1L << (LOG - 388)) | (1L << (SHOWPLAN - 388)) | (1L << (SUBSCRIBE - 388)) | (1L << (QUERY - 388)) | (1L << (NOTIFICATIONS - 388)) | (1L << (CHECKPOINT - 388)) | (1L << (SEQUENCE - 388)) | (1L << (ABORT_AFTER_WAIT - 388)) | (1L << (ALLOW_PAGE_LOCKS - 388)) | (1L << (ALLOW_ROW_LOCKS - 388)) | (1L << (ALL_SPARSE_COLUMNS - 388)) | (1L << (BUCKET_COUNT - 388)) | (1L << (COLUMNSTORE_ARCHIVE - 388)) | (1L << (COLUMN_ENCRYPTION_KEY - 388)) | (1L << (COLUMN_SET - 388)) | (1L << (COMPRESSION_DELAY - 388)) | (1L << (DATABASE_DEAULT - 388)) | (1L << (DATA_COMPRESSION - 388)) | (1L << (DATA_CONSISTENCY_CHECK - 388)) | (1L << (ENCRYPTION_TYPE - 388)) | (1L << (SYSTEM_TIME - 388)) | (1L << (SYSTEM_VERSIONING - 388)) | (1L << (TEXTIMAGE_ON - 388)) | (1L << (WAIT_AT_LOW_PRIORITY - 388)) | (1L << (STATISTICS_INCREMENTAL - 388)) | (1L << (STATISTICS_NORECOMPUTE - 388)) | (1L << (ROUND_ROBIN - 388)) | (1L << (SCHEMA_AND_DATA - 388)) | (1L << (SCHEMA_ONLY - 388)) | (1L << (SORT_IN_TEMPDB - 388)) | (1L << (IGNORE_DUP_KEY - 388)) | (1L << (IMPLICIT_TRANSACTIONS - 388)) | (1L << (MAX_DURATION - 388)) | (1L << (MEMORY_OPTIMIZED - 388)) | (1L << (MIGRATION_STATE - 388)) | (1L << (PAD_INDEX - 388)) | (1L << (REMOTE_DATA_ARCHIVE - 388)) | (1L << (FILESTREAM_ON - 388)) | (1L << (FILETABLE_COLLATE_FILENAME - 388)) | (1L << (FILETABLE_DIRECTORY - 388)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 388)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 388)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 388)) | (1L << (FILTER_PREDICATE - 388)) | (1L << (HISTORY_RETENTION_PERIOD - 388)) | (1L << (HISTORY_TABLE - 388)) | (1L << (LOCK_ESCALATION - 388)) | (1L << (DROP_EXISTING - 388)) | (1L << (ROW_NUMBER - 388)) | (1L << (FIRST - 388)) | (1L << (DATETIME2 - 388)))) != 0) || ((((_la - 458)) & ~0x3f) == 0 && ((1L << (_la - 458)) & ((1L << (OUTPUT - 458)) | (1L << (INSERTED - 458)) | (1L << (DELETED - 458)) | (1L << (FILENAME - 458)) | (1L << (SIZE - 458)) | (1L << (MAXSIZE - 458)) | (1L << (FILEGROWTH - 458)) | (1L << (UNLIMITED - 458)) | (1L << (KB - 458)) | (1L << (MB - 458)) | (1L << (GB - 458)) | (1L << (TB - 458)) | (1L << (CONTAINS - 458)) | (1L << (MEMORY_OPTIMIZED_DATA - 458)) | (1L << (FILEGROUP - 458)) | (1L << (NON_TRANSACTED_ACCESS - 458)) | (1L << (DB_CHAINING - 458)) | (1L << (TRUSTWORTHY - 458)) | (1L << (FORWARD_ONLY - 458)) | (1L << (KEYSET - 458)) | (1L << (FAST_FORWARD - 458)) | (1L << (SCROLL_LOCKS - 458)) | (1L << (OPTIMISTIC - 458)) | (1L << (TYPE_WARNING - 458)) | (1L << (SCHEMABINDING - 458)))) != 0) || ((((_la - 522)) & ~0x3f) == 0 && ((1L << (_la - 522)) & ((1L << (CALLER - 522)) | (1L << (OWNER - 522)) | (1L << (SNAPSHOT - 522)) | (1L << (REPEATABLE - 522)) | (1L << (SERIALIZABLE - 522)) | (1L << (NATIVE_COMPILATION - 522)) | (1L << (VIEW_METADATA - 522)) | (1L << (INSTEAD - 522)) | (1L << (APPEND - 522)) | (1L << (INCREMENT - 522)) | (1L << (CACHE - 522)) | (1L << (MINVALUE - 522)) | (1L << (MAXVALUE - 522)) | (1L << (RESTART - 522)) | (1L << (LOB_COMPACTION - 522)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 522)) | (1L << (REORGANIZE - 522)) | (1L << (RESUME - 522)) | (1L << (PAUSE - 522)) | (1L << (ABORT - 522)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 522)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 522)) | (1L << (IMMEDIATE - 522)) | (1L << (NO_WAIT - 522)) | (1L << (TARGET_RECOVERY_TIME - 522)) | (1L << (SECONDS - 522)) | (1L << (HONOR_BROKER_PRIORITY - 522)) | (1L << (ERROR_BROKER_CONVERSATIONS - 522)) | (1L << (NEW_BROKER - 522)) | (1L << (DISABLE_BROKER - 522)) | (1L << (ENABLE_BROKER - 522)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 522)) | (1L << (READ_COMMITTED_SNAPSHOT - 522)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 522)) | (1L << (RECURSIVE_TRIGGERS - 522)) | (1L << (QUOTED_IDENTIFIER - 522)) | (1L << (NUMERIC_ROUNDABORT - 522)) | (1L << (CONCAT_NULL_YIELDS_NULL - 522)) | (1L << (COMPATIBILITY_LEVEL - 522)) | (1L << (ARITHABORT - 522)) | (1L << (ANSI_WARNINGS - 522)) | (1L << (ANSI_PADDING - 522)) | (1L << (ANSI_NULLS - 522)))) != 0) || ((((_la - 586)) & ~0x3f) == 0 && ((1L << (_la - 586)) & ((1L << (ANSI_NULL_DEFAULT - 586)) | (1L << (PAGE_VERIFY - 586)) | (1L << (CHECKSUM - 586)) | (1L << (TORN_PAGE_DETECTION - 586)) | (1L << (BULK_LOGGED - 586)) | (1L << (RECOVERY - 586)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 586)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 586)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 586)) | (1L << (EXECUTION_COUNT - 586)) | (1L << (QUERY_CAPTURE_POLICY - 586)) | (1L << (WAIT_STATS_CAPTURE_MODE - 586)) | (1L << (MAX_PLANS_PER_QUERY - 586)) | (1L << (QUERY_CAPTURE_MODE - 586)) | (1L << (SIZE_BASED_CLEANUP_MODE - 586)) | (1L << (INTERVAL_LENGTH_MINUTES - 586)) | (1L << (MAX_STORAGE_SIZE_MB - 586)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 586)) | (1L << (CLEANUP_POLICY - 586)) | (1L << (CUSTOM - 586)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 586)) | (1L << (OPERATION_MODE - 586)) | (1L << (QUERY_STORE - 586)) | (1L << (CURSOR_DEFAULT - 586)) | (1L << (GLOBAL - 586)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 586)) | (1L << (HOURS - 586)) | (1L << (CHANGE_RETENTION - 586)) | (1L << (AUTO_CLEANUP - 586)) | (1L << (CHANGE_TRACKING - 586)) | (1L << (AUTOMATIC_TUNING - 586)) | (1L << (FORCE_LAST_GOOD_PLAN - 586)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 586)) | (1L << (AUTO_UPDATE_STATISTICS - 586)) | (1L << (AUTO_SHRINK - 586)) | (1L << (AUTO_CREATE_STATISTICS - 586)) | (1L << (INCREMENTAL - 586)) | (1L << (AUTO_CLOSE - 586)) | (1L << (DATA_RETENTION - 586)) | (1L << (TEMPORAL_HISTORY_RETENTION - 586)) | (1L << (EDITION - 586)) | (1L << (MIXED_PAGE_ALLOCATION - 586)) | (1L << (DISABLED - 586)) | (1L << (ALLOWED - 586)) | (1L << (HADR - 586)) | (1L << (MULTI_USER - 586)) | (1L << (RESTRICTED_USER - 586)) | (1L << (SINGLE_USER - 586)) | (1L << (OFFLINE - 586)) | (1L << (EMERGENCY - 586)) | (1L << (SUSPEND - 586)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 586)) | (1L << (ELASTIC_POOL - 586)) | (1L << (SERVICE_OBJECTIVE - 586)) | (1L << (DATABASE_NAME - 586)) | (1L << (ALLOW_CONNECTIONS - 586)) | (1L << (GEO - 586)) | (1L << (NAMED - 586)) | (1L << (DATEFIRST - 586)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 586)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 586)) | (1L << (SECONDARY - 586)) | (1L << (FAILOVER - 586)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 586)))) != 0) || ((((_la - 650)) & ~0x3f) == 0 && ((1L << (_la - 650)) & ((1L << (DEFAULT_LANGUAGE - 650)) | (1L << (INLINE - 650)) | (1L << (NESTED_TRIGGERS - 650)) | (1L << (TRANSFORM_NOISE_WORDS - 650)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 650)) | (1L << (PERSISTENT_LOG_BUFFER - 650)) | (1L << (DIRECTORY_NAME - 650)) | (1L << (DATEFORMAT - 650)) | (1L << (DELAYED_DURABILITY - 650)) | (1L << (AUTHORIZATION - 650)) | (1L << (TRANSFER - 650)) | (1L << (PROVIDER - 650)) | (1L << (SEARCH - 650)) | (1L << (MEMBER - 650)) | (1L << (IDENTIFIER_ - 650)) | (1L << (DELIMITED_IDENTIFIER_ - 650)))) != 0)) {
27521 				{
27522 				setState(3888);
27523 				procParameter();
27524 				setState(3893);
27525 				_errHandler.sync(this);
27526 				_la = _input.LA(1);
27527 				while (_la==COMMA_) {
27528 					{
27529 					{
27530 					setState(3889);
27531 					match(COMMA_);
27532 					setState(3890);
27533 					procParameter();
27534 					}
27535 					}
27536 					setState(3895);
27537 					_errHandler.sync(this);
27538 					_la = _input.LA(1);
27539 				}
27540 				}
27541 			}
27542 
27543 			}
27544 		}
27545 		catch (RecognitionException re) {
27546 			_localctx.exception = re;
27547 			_errHandler.reportError(this, re);
27548 			_errHandler.recover(this, re);
27549 		}
27550 		finally {
27551 			exitRule();
27552 		}
27553 		return _localctx;
27554 	}
27555 
27556 	public static class ProcParameterContext extends ParserRuleContext {
27557 		public VariableContext variable() {
27558 			return getRuleContext(VariableContext.class,0);
27559 		}
27560 		public TerminalNode VARYING() { return getToken(SQLServerStatementParser.VARYING, 0); }
27561 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
27562 		public LiteralsContext literals() {
27563 			return getRuleContext(LiteralsContext.class,0);
27564 		}
27565 		public TerminalNode OUT() { return getToken(SQLServerStatementParser.OUT, 0); }
27566 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
27567 		public TerminalNode READONLY() { return getToken(SQLServerStatementParser.READONLY, 0); }
27568 		public ProcParameterContext(ParserRuleContext parent, int invokingState) {
27569 			super(parent, invokingState);
27570 		}
27571 		@Override public int getRuleIndex() { return RULE_procParameter; }
27572 		@Override
27573 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27574 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcParameter(this);
27575 			else return visitor.visitChildren(this);
27576 		}
27577 	}
27578 
27579 	public final ProcParameterContext procParameter() throws RecognitionException {
27580 		ProcParameterContext _localctx = new ProcParameterContext(_ctx, getState());
27581 		enterRule(_localctx, 564, RULE_procParameter);
27582 		int _la;
27583 		try {
27584 			enterOuterAlt(_localctx, 1);
27585 			{
27586 			setState(3898);
27587 			variable();
27588 			setState(3900);
27589 			_errHandler.sync(this);
27590 			_la = _input.LA(1);
27591 			if (_la==VARYING) {
27592 				{
27593 				setState(3899);
27594 				match(VARYING);
27595 				}
27596 			}
27597 
27598 			setState(3904);
27599 			_errHandler.sync(this);
27600 			_la = _input.LA(1);
27601 			if (_la==EQ_) {
27602 				{
27603 				setState(3902);
27604 				match(EQ_);
27605 				setState(3903);
27606 				literals();
27607 				}
27608 			}
27609 
27610 			setState(3907);
27611 			_errHandler.sync(this);
27612 			_la = _input.LA(1);
27613 			if (_la==READONLY || _la==OUTPUT || _la==OUT) {
27614 				{
27615 				setState(3906);
27616 				_la = _input.LA(1);
27617 				if ( !(_la==READONLY || _la==OUTPUT || _la==OUT) ) {
27618 				_errHandler.recoverInline(this);
27619 				}
27620 				else {
27621 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27622 					_errHandler.reportMatch(this);
27623 					consume();
27624 				}
27625 				}
27626 			}
27627 
27628 			}
27629 		}
27630 		catch (RecognitionException re) {
27631 			_localctx.exception = re;
27632 			_errHandler.reportError(this, re);
27633 			_errHandler.recover(this, re);
27634 		}
27635 		finally {
27636 			exitRule();
27637 		}
27638 		return _localctx;
27639 	}
27640 
27641 	public static class CreateOrAlterProcClauseContext extends ParserRuleContext {
27642 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27643 		public ProcAsClauseContext procAsClause() {
27644 			return getRuleContext(ProcAsClauseContext.class,0);
27645 		}
27646 		public WithCreateProcOptionContext withCreateProcOption() {
27647 			return getRuleContext(WithCreateProcOptionContext.class,0);
27648 		}
27649 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
27650 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
27651 		public CreateOrAlterProcClauseContext(ParserRuleContext parent, int invokingState) {
27652 			super(parent, invokingState);
27653 		}
27654 		@Override public int getRuleIndex() { return RULE_createOrAlterProcClause; }
27655 		@Override
27656 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27657 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterProcClause(this);
27658 			else return visitor.visitChildren(this);
27659 		}
27660 	}
27661 
27662 	public final CreateOrAlterProcClauseContext createOrAlterProcClause() throws RecognitionException {
27663 		CreateOrAlterProcClauseContext _localctx = new CreateOrAlterProcClauseContext(_ctx, getState());
27664 		enterRule(_localctx, 566, RULE_createOrAlterProcClause);
27665 		int _la;
27666 		try {
27667 			enterOuterAlt(_localctx, 1);
27668 			{
27669 			setState(3910);
27670 			_errHandler.sync(this);
27671 			_la = _input.LA(1);
27672 			if (_la==WITH) {
27673 				{
27674 				setState(3909);
27675 				withCreateProcOption();
27676 				}
27677 			}
27678 
27679 			setState(3914);
27680 			_errHandler.sync(this);
27681 			_la = _input.LA(1);
27682 			if (_la==FOR) {
27683 				{
27684 				setState(3912);
27685 				match(FOR);
27686 				setState(3913);
27687 				match(REPLICATION);
27688 				}
27689 			}
27690 
27691 			setState(3916);
27692 			match(AS);
27693 			setState(3917);
27694 			procAsClause();
27695 			}
27696 		}
27697 		catch (RecognitionException re) {
27698 			_localctx.exception = re;
27699 			_errHandler.reportError(this, re);
27700 			_errHandler.recover(this, re);
27701 		}
27702 		finally {
27703 			exitRule();
27704 		}
27705 		return _localctx;
27706 	}
27707 
27708 	public static class WithCreateProcOptionContext extends ParserRuleContext {
27709 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27710 		public List<ProcOptionContext> procOption() {
27711 			return getRuleContexts(ProcOptionContext.class);
27712 		}
27713 		public ProcOptionContext procOption(int i) {
27714 			return getRuleContext(ProcOptionContext.class,i);
27715 		}
27716 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27717 		public TerminalNode COMMA_(int i) {
27718 			return getToken(SQLServerStatementParser.COMMA_, i);
27719 		}
27720 		public WithCreateProcOptionContext(ParserRuleContext parent, int invokingState) {
27721 			super(parent, invokingState);
27722 		}
27723 		@Override public int getRuleIndex() { return RULE_withCreateProcOption; }
27724 		@Override
27725 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27726 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithCreateProcOption(this);
27727 			else return visitor.visitChildren(this);
27728 		}
27729 	}
27730 
27731 	public final WithCreateProcOptionContext withCreateProcOption() throws RecognitionException {
27732 		WithCreateProcOptionContext _localctx = new WithCreateProcOptionContext(_ctx, getState());
27733 		enterRule(_localctx, 568, RULE_withCreateProcOption);
27734 		int _la;
27735 		try {
27736 			enterOuterAlt(_localctx, 1);
27737 			{
27738 			setState(3919);
27739 			match(WITH);
27740 			setState(3928);
27741 			_errHandler.sync(this);
27742 			_la = _input.LA(1);
27743 			if (((((_la - 318)) & ~0x3f) == 0 && ((1L << (_la - 318)) & ((1L << (EXECUTE - 318)) | (1L << (EXEC - 318)) | (1L << (ENCRYPTION - 318)))) != 0) || ((((_la - 489)) & ~0x3f) == 0 && ((1L << (_la - 489)) & ((1L << (RECOMPILE - 489)) | (1L << (SCHEMABINDING - 489)) | (1L << (NATIVE_COMPILATION - 489)))) != 0)) {
27744 				{
27745 				setState(3920);
27746 				procOption();
27747 				setState(3925);
27748 				_errHandler.sync(this);
27749 				_la = _input.LA(1);
27750 				while (_la==COMMA_) {
27751 					{
27752 					{
27753 					setState(3921);
27754 					match(COMMA_);
27755 					setState(3922);
27756 					procOption();
27757 					}
27758 					}
27759 					setState(3927);
27760 					_errHandler.sync(this);
27761 					_la = _input.LA(1);
27762 				}
27763 				}
27764 			}
27765 
27766 			}
27767 		}
27768 		catch (RecognitionException re) {
27769 			_localctx.exception = re;
27770 			_errHandler.reportError(this, re);
27771 			_errHandler.recover(this, re);
27772 		}
27773 		finally {
27774 			exitRule();
27775 		}
27776 		return _localctx;
27777 	}
27778 
27779 	public static class ProcOptionContext extends ParserRuleContext {
27780 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
27781 		public TerminalNode RECOMPILE() { return getToken(SQLServerStatementParser.RECOMPILE, 0); }
27782 		public ExecuteAsClauseContext executeAsClause() {
27783 			return getRuleContext(ExecuteAsClauseContext.class,0);
27784 		}
27785 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
27786 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
27787 		public ProcOptionContext(ParserRuleContext parent, int invokingState) {
27788 			super(parent, invokingState);
27789 		}
27790 		@Override public int getRuleIndex() { return RULE_procOption; }
27791 		@Override
27792 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27793 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcOption(this);
27794 			else return visitor.visitChildren(this);
27795 		}
27796 	}
27797 
27798 	public final ProcOptionContext procOption() throws RecognitionException {
27799 		ProcOptionContext _localctx = new ProcOptionContext(_ctx, getState());
27800 		enterRule(_localctx, 570, RULE_procOption);
27801 		try {
27802 			setState(3935);
27803 			_errHandler.sync(this);
27804 			switch (_input.LA(1)) {
27805 			case ENCRYPTION:
27806 				enterOuterAlt(_localctx, 1);
27807 				{
27808 				setState(3930);
27809 				match(ENCRYPTION);
27810 				}
27811 				break;
27812 			case RECOMPILE:
27813 				enterOuterAlt(_localctx, 2);
27814 				{
27815 				setState(3931);
27816 				match(RECOMPILE);
27817 				}
27818 				break;
27819 			case EXECUTE:
27820 			case EXEC:
27821 				enterOuterAlt(_localctx, 3);
27822 				{
27823 				setState(3932);
27824 				executeAsClause();
27825 				}
27826 				break;
27827 			case NATIVE_COMPILATION:
27828 				enterOuterAlt(_localctx, 4);
27829 				{
27830 				setState(3933);
27831 				match(NATIVE_COMPILATION);
27832 				}
27833 				break;
27834 			case SCHEMABINDING:
27835 				enterOuterAlt(_localctx, 5);
27836 				{
27837 				setState(3934);
27838 				match(SCHEMABINDING);
27839 				}
27840 				break;
27841 			default:
27842 				throw new NoViableAltException(this);
27843 			}
27844 		}
27845 		catch (RecognitionException re) {
27846 			_localctx.exception = re;
27847 			_errHandler.reportError(this, re);
27848 			_errHandler.recover(this, re);
27849 		}
27850 		finally {
27851 			exitRule();
27852 		}
27853 		return _localctx;
27854 	}
27855 
27856 	public static class ProcAsClauseContext extends ParserRuleContext {
27857 		public CompoundStatementContext compoundStatement() {
27858 			return getRuleContext(CompoundStatementContext.class,0);
27859 		}
27860 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
27861 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
27862 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
27863 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
27864 		public NameContext name() {
27865 			return getRuleContext(NameContext.class,0);
27866 		}
27867 		public List<OwnerContext> owner() {
27868 			return getRuleContexts(OwnerContext.class);
27869 		}
27870 		public OwnerContext owner(int i) {
27871 			return getRuleContext(OwnerContext.class,i);
27872 		}
27873 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
27874 		public TerminalNode DOT_(int i) {
27875 			return getToken(SQLServerStatementParser.DOT_, i);
27876 		}
27877 		public TerminalNode ATOMIC() { return getToken(SQLServerStatementParser.ATOMIC, 0); }
27878 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27879 		public List<ProcSetOptionContext> procSetOption() {
27880 			return getRuleContexts(ProcSetOptionContext.class);
27881 		}
27882 		public ProcSetOptionContext procSetOption(int i) {
27883 			return getRuleContext(ProcSetOptionContext.class,i);
27884 		}
27885 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27886 		public TerminalNode COMMA_(int i) {
27887 			return getToken(SQLServerStatementParser.COMMA_, i);
27888 		}
27889 		public ProcAsClauseContext(ParserRuleContext parent, int invokingState) {
27890 			super(parent, invokingState);
27891 		}
27892 		@Override public int getRuleIndex() { return RULE_procAsClause; }
27893 		@Override
27894 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27895 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcAsClause(this);
27896 			else return visitor.visitChildren(this);
27897 		}
27898 	}
27899 
27900 	public final ProcAsClauseContext procAsClause() throws RecognitionException {
27901 		ProcAsClauseContext _localctx = new ProcAsClauseContext(_ctx, getState());
27902 		enterRule(_localctx, 572, RULE_procAsClause);
27903 		int _la;
27904 		try {
27905 			setState(3972);
27906 			_errHandler.sync(this);
27907 			switch ( getInterpreter().adaptivePredict(_input,416,_ctx) ) {
27908 			case 1:
27909 				enterOuterAlt(_localctx, 1);
27910 				{
27911 				setState(3938);
27912 				_errHandler.sync(this);
27913 				_la = _input.LA(1);
27914 				if (_la==BEGIN) {
27915 					{
27916 					setState(3937);
27917 					match(BEGIN);
27918 					}
27919 				}
27920 
27921 				setState(3940);
27922 				compoundStatement();
27923 				setState(3942);
27924 				_errHandler.sync(this);
27925 				_la = _input.LA(1);
27926 				if (_la==END) {
27927 					{
27928 					setState(3941);
27929 					match(END);
27930 					}
27931 				}
27932 
27933 				}
27934 				break;
27935 			case 2:
27936 				enterOuterAlt(_localctx, 2);
27937 				{
27938 				setState(3944);
27939 				match(EXTERNAL);
27940 				setState(3945);
27941 				match(NAME);
27942 				setState(3949);
27943 				_errHandler.sync(this);
27944 				switch ( getInterpreter().adaptivePredict(_input,412,_ctx) ) {
27945 				case 1:
27946 					{
27947 					setState(3946);
27948 					owner();
27949 					setState(3947);
27950 					match(DOT_);
27951 					}
27952 					break;
27953 				}
27954 				setState(3954);
27955 				_errHandler.sync(this);
27956 				switch ( getInterpreter().adaptivePredict(_input,413,_ctx) ) {
27957 				case 1:
27958 					{
27959 					setState(3951);
27960 					owner();
27961 					setState(3952);
27962 					match(DOT_);
27963 					}
27964 					break;
27965 				}
27966 				setState(3956);
27967 				name();
27968 				}
27969 				break;
27970 			case 3:
27971 				enterOuterAlt(_localctx, 3);
27972 				{
27973 				setState(3957);
27974 				match(BEGIN);
27975 				setState(3958);
27976 				match(ATOMIC);
27977 				setState(3959);
27978 				match(WITH);
27979 				setState(3960);
27980 				procSetOption();
27981 				setState(3965);
27982 				_errHandler.sync(this);
27983 				_la = _input.LA(1);
27984 				while (_la==COMMA_) {
27985 					{
27986 					{
27987 					setState(3961);
27988 					match(COMMA_);
27989 					setState(3962);
27990 					procSetOption();
27991 					}
27992 					}
27993 					setState(3967);
27994 					_errHandler.sync(this);
27995 					_la = _input.LA(1);
27996 				}
27997 				setState(3968);
27998 				compoundStatement();
27999 				setState(3970);
28000 				_errHandler.sync(this);
28001 				_la = _input.LA(1);
28002 				if (_la==END) {
28003 					{
28004 					setState(3969);
28005 					match(END);
28006 					}
28007 				}
28008 
28009 				}
28010 				break;
28011 			}
28012 		}
28013 		catch (RecognitionException re) {
28014 			_localctx.exception = re;
28015 			_errHandler.reportError(this, re);
28016 			_errHandler.recover(this, re);
28017 		}
28018 		finally {
28019 			exitRule();
28020 		}
28021 		return _localctx;
28022 	}
28023 
28024 	public static class ProcSetOptionContext extends ParserRuleContext {
28025 		public TerminalNode LANGUAGE() { return getToken(SQLServerStatementParser.LANGUAGE, 0); }
28026 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
28027 		public StringLiteralsContext stringLiterals() {
28028 			return getRuleContext(StringLiteralsContext.class,0);
28029 		}
28030 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
28031 		public TerminalNode ISOLATION() { return getToken(SQLServerStatementParser.ISOLATION, 0); }
28032 		public TerminalNode LEVEL() { return getToken(SQLServerStatementParser.LEVEL, 0); }
28033 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
28034 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
28035 		public TerminalNode READ() { return getToken(SQLServerStatementParser.READ, 0); }
28036 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
28037 		public TerminalNode DATEFIRST() { return getToken(SQLServerStatementParser.DATEFIRST, 0); }
28038 		public NumberLiteralsContext numberLiterals() {
28039 			return getRuleContext(NumberLiteralsContext.class,0);
28040 		}
28041 		public TerminalNode DATEFORMAT() { return getToken(SQLServerStatementParser.DATEFORMAT, 0); }
28042 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
28043 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
28044 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
28045 		public ProcSetOptionContext(ParserRuleContext parent, int invokingState) {
28046 			super(parent, invokingState);
28047 		}
28048 		@Override public int getRuleIndex() { return RULE_procSetOption; }
28049 		@Override
28050 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28051 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcSetOption(this);
28052 			else return visitor.visitChildren(this);
28053 		}
28054 	}
28055 
28056 	public final ProcSetOptionContext procSetOption() throws RecognitionException {
28057 		ProcSetOptionContext _localctx = new ProcSetOptionContext(_ctx, getState());
28058 		enterRule(_localctx, 574, RULE_procSetOption);
28059 		int _la;
28060 		try {
28061 			setState(3996);
28062 			_errHandler.sync(this);
28063 			switch (_input.LA(1)) {
28064 			case LANGUAGE:
28065 				enterOuterAlt(_localctx, 1);
28066 				{
28067 				setState(3974);
28068 				match(LANGUAGE);
28069 				setState(3975);
28070 				match(EQ_);
28071 				setState(3976);
28072 				stringLiterals();
28073 				}
28074 				break;
28075 			case TRANSACTION:
28076 				enterOuterAlt(_localctx, 2);
28077 				{
28078 				setState(3977);
28079 				match(TRANSACTION);
28080 				setState(3978);
28081 				match(ISOLATION);
28082 				setState(3979);
28083 				match(LEVEL);
28084 				setState(3980);
28085 				match(EQ_);
28086 				setState(3985);
28087 				_errHandler.sync(this);
28088 				switch (_input.LA(1)) {
28089 				case SNAPSHOT:
28090 					{
28091 					setState(3981);
28092 					match(SNAPSHOT);
28093 					}
28094 					break;
28095 				case REPEATABLE:
28096 					{
28097 					setState(3982);
28098 					match(REPEATABLE);
28099 					setState(3983);
28100 					match(READ);
28101 					}
28102 					break;
28103 				case SERIALIZABLE:
28104 					{
28105 					setState(3984);
28106 					match(SERIALIZABLE);
28107 					}
28108 					break;
28109 				default:
28110 					throw new NoViableAltException(this);
28111 				}
28112 				}
28113 				break;
28114 			case DATEFIRST:
28115 				enterOuterAlt(_localctx, 3);
28116 				{
28117 				setState(3987);
28118 				match(DATEFIRST);
28119 				setState(3988);
28120 				match(EQ_);
28121 				setState(3989);
28122 				numberLiterals();
28123 				}
28124 				break;
28125 			case DATEFORMAT:
28126 				enterOuterAlt(_localctx, 4);
28127 				{
28128 				setState(3990);
28129 				match(DATEFORMAT);
28130 				setState(3991);
28131 				match(EQ_);
28132 				setState(3992);
28133 				stringLiterals();
28134 				}
28135 				break;
28136 			case DELAYED_DURABILITY:
28137 				enterOuterAlt(_localctx, 5);
28138 				{
28139 				setState(3993);
28140 				match(DELAYED_DURABILITY);
28141 				setState(3994);
28142 				match(EQ_);
28143 				setState(3995);
28144 				_la = _input.LA(1);
28145 				if ( !(_la==ON || _la==OFF) ) {
28146 				_errHandler.recoverInline(this);
28147 				}
28148 				else {
28149 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
28150 					_errHandler.reportMatch(this);
28151 					consume();
28152 				}
28153 				}
28154 				break;
28155 			default:
28156 				throw new NoViableAltException(this);
28157 			}
28158 		}
28159 		catch (RecognitionException re) {
28160 			_localctx.exception = re;
28161 			_errHandler.reportError(this, re);
28162 			_errHandler.recover(this, re);
28163 		}
28164 		finally {
28165 			exitRule();
28166 		}
28167 		return _localctx;
28168 	}
28169 
28170 	public static class CreateOrAlterViewClauseContext extends ParserRuleContext {
28171 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
28172 		public SelectContext select() {
28173 			return getRuleContext(SelectContext.class,0);
28174 		}
28175 		public List<TerminalNode> WITH() { return getTokens(SQLServerStatementParser.WITH); }
28176 		public TerminalNode WITH(int i) {
28177 			return getToken(SQLServerStatementParser.WITH, i);
28178 		}
28179 		public List<ViewAttributeContext> viewAttribute() {
28180 			return getRuleContexts(ViewAttributeContext.class);
28181 		}
28182 		public ViewAttributeContext viewAttribute(int i) {
28183 			return getRuleContext(ViewAttributeContext.class,i);
28184 		}
28185 		public WithCommonTableExprContext withCommonTableExpr() {
28186 			return getRuleContext(WithCommonTableExprContext.class,0);
28187 		}
28188 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
28189 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
28190 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28191 		public TerminalNode COMMA_(int i) {
28192 			return getToken(SQLServerStatementParser.COMMA_, i);
28193 		}
28194 		public CreateOrAlterViewClauseContext(ParserRuleContext parent, int invokingState) {
28195 			super(parent, invokingState);
28196 		}
28197 		@Override public int getRuleIndex() { return RULE_createOrAlterViewClause; }
28198 		@Override
28199 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28200 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterViewClause(this);
28201 			else return visitor.visitChildren(this);
28202 		}
28203 	}
28204 
28205 	public final CreateOrAlterViewClauseContext createOrAlterViewClause() throws RecognitionException {
28206 		CreateOrAlterViewClauseContext _localctx = new CreateOrAlterViewClauseContext(_ctx, getState());
28207 		enterRule(_localctx, 576, RULE_createOrAlterViewClause);
28208 		int _la;
28209 		try {
28210 			enterOuterAlt(_localctx, 1);
28211 			{
28212 			setState(4007);
28213 			_errHandler.sync(this);
28214 			_la = _input.LA(1);
28215 			if (_la==WITH) {
28216 				{
28217 				setState(3998);
28218 				match(WITH);
28219 				setState(3999);
28220 				viewAttribute();
28221 				setState(4004);
28222 				_errHandler.sync(this);
28223 				_la = _input.LA(1);
28224 				while (_la==COMMA_) {
28225 					{
28226 					{
28227 					setState(4000);
28228 					match(COMMA_);
28229 					setState(4001);
28230 					viewAttribute();
28231 					}
28232 					}
28233 					setState(4006);
28234 					_errHandler.sync(this);
28235 					_la = _input.LA(1);
28236 				}
28237 				}
28238 			}
28239 
28240 			setState(4009);
28241 			match(AS);
28242 			setState(4011);
28243 			_errHandler.sync(this);
28244 			switch ( getInterpreter().adaptivePredict(_input,421,_ctx) ) {
28245 			case 1:
28246 				{
28247 				setState(4010);
28248 				withCommonTableExpr();
28249 				}
28250 				break;
28251 			}
28252 			setState(4013);
28253 			select();
28254 			setState(4017);
28255 			_errHandler.sync(this);
28256 			_la = _input.LA(1);
28257 			if (_la==WITH) {
28258 				{
28259 				setState(4014);
28260 				match(WITH);
28261 				setState(4015);
28262 				match(CHECK);
28263 				setState(4016);
28264 				match(OPTION);
28265 				}
28266 			}
28267 
28268 			}
28269 		}
28270 		catch (RecognitionException re) {
28271 			_localctx.exception = re;
28272 			_errHandler.reportError(this, re);
28273 			_errHandler.recover(this, re);
28274 		}
28275 		finally {
28276 			exitRule();
28277 		}
28278 		return _localctx;
28279 	}
28280 
28281 	public static class ViewAttributeContext extends ParserRuleContext {
28282 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
28283 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
28284 		public TerminalNode VIEW_METADATA() { return getToken(SQLServerStatementParser.VIEW_METADATA, 0); }
28285 		public ViewAttributeContext(ParserRuleContext parent, int invokingState) {
28286 			super(parent, invokingState);
28287 		}
28288 		@Override public int getRuleIndex() { return RULE_viewAttribute; }
28289 		@Override
28290 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28291 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitViewAttribute(this);
28292 			else return visitor.visitChildren(this);
28293 		}
28294 	}
28295 
28296 	public final ViewAttributeContext viewAttribute() throws RecognitionException {
28297 		ViewAttributeContext _localctx = new ViewAttributeContext(_ctx, getState());
28298 		enterRule(_localctx, 578, RULE_viewAttribute);
28299 		int _la;
28300 		try {
28301 			enterOuterAlt(_localctx, 1);
28302 			{
28303 			setState(4019);
28304 			_la = _input.LA(1);
28305 			if ( !(_la==ENCRYPTION || _la==SCHEMABINDING || _la==VIEW_METADATA) ) {
28306 			_errHandler.recoverInline(this);
28307 			}
28308 			else {
28309 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
28310 				_errHandler.reportMatch(this);
28311 				consume();
28312 			}
28313 			}
28314 		}
28315 		catch (RecognitionException re) {
28316 			_localctx.exception = re;
28317 			_errHandler.reportError(this, re);
28318 			_errHandler.recover(this, re);
28319 		}
28320 		finally {
28321 			exitRule();
28322 		}
28323 		return _localctx;
28324 	}
28325 
28326 	public static class WithCommonTableExprContext extends ParserRuleContext {
28327 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
28328 		public List<CommonTableExprContext> commonTableExpr() {
28329 			return getRuleContexts(CommonTableExprContext.class);
28330 		}
28331 		public CommonTableExprContext commonTableExpr(int i) {
28332 			return getRuleContext(CommonTableExprContext.class,i);
28333 		}
28334 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28335 		public TerminalNode COMMA_(int i) {
28336 			return getToken(SQLServerStatementParser.COMMA_, i);
28337 		}
28338 		public WithCommonTableExprContext(ParserRuleContext parent, int invokingState) {
28339 			super(parent, invokingState);
28340 		}
28341 		@Override public int getRuleIndex() { return RULE_withCommonTableExpr; }
28342 		@Override
28343 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28344 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithCommonTableExpr(this);
28345 			else return visitor.visitChildren(this);
28346 		}
28347 	}
28348 
28349 	public final WithCommonTableExprContext withCommonTableExpr() throws RecognitionException {
28350 		WithCommonTableExprContext _localctx = new WithCommonTableExprContext(_ctx, getState());
28351 		enterRule(_localctx, 580, RULE_withCommonTableExpr);
28352 		int _la;
28353 		try {
28354 			enterOuterAlt(_localctx, 1);
28355 			{
28356 			setState(4021);
28357 			match(WITH);
28358 			setState(4022);
28359 			commonTableExpr();
28360 			setState(4027);
28361 			_errHandler.sync(this);
28362 			_la = _input.LA(1);
28363 			while (_la==COMMA_) {
28364 				{
28365 				{
28366 				setState(4023);
28367 				match(COMMA_);
28368 				setState(4024);
28369 				commonTableExpr();
28370 				}
28371 				}
28372 				setState(4029);
28373 				_errHandler.sync(this);
28374 				_la = _input.LA(1);
28375 			}
28376 			}
28377 		}
28378 		catch (RecognitionException re) {
28379 			_localctx.exception = re;
28380 			_errHandler.reportError(this, re);
28381 			_errHandler.recover(this, re);
28382 		}
28383 		finally {
28384 			exitRule();
28385 		}
28386 		return _localctx;
28387 	}
28388 
28389 	public static class CommonTableExprContext extends ParserRuleContext {
28390 		public NameContext name() {
28391 			return getRuleContext(NameContext.class,0);
28392 		}
28393 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
28394 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
28395 		public TerminalNode LP_(int i) {
28396 			return getToken(SQLServerStatementParser.LP_, i);
28397 		}
28398 		public SelectContext select() {
28399 			return getRuleContext(SelectContext.class,0);
28400 		}
28401 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
28402 		public TerminalNode RP_(int i) {
28403 			return getToken(SQLServerStatementParser.RP_, i);
28404 		}
28405 		public List<ColumnNameContext> columnName() {
28406 			return getRuleContexts(ColumnNameContext.class);
28407 		}
28408 		public ColumnNameContext columnName(int i) {
28409 			return getRuleContext(ColumnNameContext.class,i);
28410 		}
28411 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28412 		public TerminalNode COMMA_(int i) {
28413 			return getToken(SQLServerStatementParser.COMMA_, i);
28414 		}
28415 		public CommonTableExprContext(ParserRuleContext parent, int invokingState) {
28416 			super(parent, invokingState);
28417 		}
28418 		@Override public int getRuleIndex() { return RULE_commonTableExpr; }
28419 		@Override
28420 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28421 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommonTableExpr(this);
28422 			else return visitor.visitChildren(this);
28423 		}
28424 	}
28425 
28426 	public final CommonTableExprContext commonTableExpr() throws RecognitionException {
28427 		CommonTableExprContext _localctx = new CommonTableExprContext(_ctx, getState());
28428 		enterRule(_localctx, 582, RULE_commonTableExpr);
28429 		int _la;
28430 		try {
28431 			enterOuterAlt(_localctx, 1);
28432 			{
28433 			setState(4030);
28434 			name();
28435 			setState(4042);
28436 			_errHandler.sync(this);
28437 			_la = _input.LA(1);
28438 			if (_la==LP_) {
28439 				{
28440 				setState(4031);
28441 				match(LP_);
28442 				setState(4032);
28443 				columnName();
28444 				setState(4037);
28445 				_errHandler.sync(this);
28446 				_la = _input.LA(1);
28447 				while (_la==COMMA_) {
28448 					{
28449 					{
28450 					setState(4033);
28451 					match(COMMA_);
28452 					setState(4034);
28453 					columnName();
28454 					}
28455 					}
28456 					setState(4039);
28457 					_errHandler.sync(this);
28458 					_la = _input.LA(1);
28459 				}
28460 				setState(4040);
28461 				match(RP_);
28462 				}
28463 			}
28464 
28465 			setState(4044);
28466 			match(AS);
28467 			setState(4045);
28468 			match(LP_);
28469 			setState(4046);
28470 			select();
28471 			setState(4047);
28472 			match(RP_);
28473 			}
28474 		}
28475 		catch (RecognitionException re) {
28476 			_localctx.exception = re;
28477 			_errHandler.reportError(this, re);
28478 			_errHandler.recover(this, re);
28479 		}
28480 		finally {
28481 			exitRule();
28482 		}
28483 		return _localctx;
28484 	}
28485 
28486 	public static class CreateTriggerClauseContext extends ParserRuleContext {
28487 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
28488 		public List<TerminalNode> FOR() { return getTokens(SQLServerStatementParser.FOR); }
28489 		public TerminalNode FOR(int i) {
28490 			return getToken(SQLServerStatementParser.FOR, i);
28491 		}
28492 		public TerminalNode AFTER() { return getToken(SQLServerStatementParser.AFTER, 0); }
28493 		public TerminalNode INSTEAD() { return getToken(SQLServerStatementParser.INSTEAD, 0); }
28494 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
28495 		public CompoundStatementContext compoundStatement() {
28496 			return getRuleContext(CompoundStatementContext.class,0);
28497 		}
28498 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
28499 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
28500 		public MethodSpecifierContext methodSpecifier() {
28501 			return getRuleContext(MethodSpecifierContext.class,0);
28502 		}
28503 		public List<TerminalNode> WITH() { return getTokens(SQLServerStatementParser.WITH); }
28504 		public TerminalNode WITH(int i) {
28505 			return getToken(SQLServerStatementParser.WITH, i);
28506 		}
28507 		public List<DmlTriggerOptionContext> dmlTriggerOption() {
28508 			return getRuleContexts(DmlTriggerOptionContext.class);
28509 		}
28510 		public DmlTriggerOptionContext dmlTriggerOption(int i) {
28511 			return getRuleContext(DmlTriggerOptionContext.class,i);
28512 		}
28513 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28514 		public TerminalNode COMMA_(int i) {
28515 			return getToken(SQLServerStatementParser.COMMA_, i);
28516 		}
28517 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
28518 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
28519 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
28520 		public TerminalNode APPEND() { return getToken(SQLServerStatementParser.APPEND, 0); }
28521 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
28522 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
28523 		public CreateTriggerClauseContext(ParserRuleContext parent, int invokingState) {
28524 			super(parent, invokingState);
28525 		}
28526 		@Override public int getRuleIndex() { return RULE_createTriggerClause; }
28527 		@Override
28528 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28529 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTriggerClause(this);
28530 			else return visitor.visitChildren(this);
28531 		}
28532 	}
28533 
28534 	public final CreateTriggerClauseContext createTriggerClause() throws RecognitionException {
28535 		CreateTriggerClauseContext _localctx = new CreateTriggerClauseContext(_ctx, getState());
28536 		enterRule(_localctx, 584, RULE_createTriggerClause);
28537 		int _la;
28538 		try {
28539 			enterOuterAlt(_localctx, 1);
28540 			{
28541 			setState(4054);
28542 			_errHandler.sync(this);
28543 			_la = _input.LA(1);
28544 			if (_la==WITH) {
28545 				{
28546 				setState(4049);
28547 				match(WITH);
28548 				setState(4050);
28549 				dmlTriggerOption();
28550 				setState(4051);
28551 				match(COMMA_);
28552 				setState(4052);
28553 				dmlTriggerOption();
28554 				}
28555 			}
28556 
28557 			setState(4060);
28558 			_errHandler.sync(this);
28559 			switch (_input.LA(1)) {
28560 			case FOR:
28561 				{
28562 				setState(4056);
28563 				match(FOR);
28564 				}
28565 				break;
28566 			case AFTER:
28567 				{
28568 				setState(4057);
28569 				match(AFTER);
28570 				}
28571 				break;
28572 			case INSTEAD:
28573 				{
28574 				setState(4058);
28575 				match(INSTEAD);
28576 				setState(4059);
28577 				match(OF);
28578 				}
28579 				break;
28580 			default:
28581 				throw new NoViableAltException(this);
28582 			}
28583 			setState(4063);
28584 			_errHandler.sync(this);
28585 			_la = _input.LA(1);
28586 			if (_la==INSERT) {
28587 				{
28588 				setState(4062);
28589 				match(INSERT);
28590 				}
28591 			}
28592 
28593 			setState(4066);
28594 			_errHandler.sync(this);
28595 			switch ( getInterpreter().adaptivePredict(_input,429,_ctx) ) {
28596 			case 1:
28597 				{
28598 				setState(4065);
28599 				match(COMMA_);
28600 				}
28601 				break;
28602 			}
28603 			setState(4069);
28604 			_errHandler.sync(this);
28605 			_la = _input.LA(1);
28606 			if (_la==UPDATE) {
28607 				{
28608 				setState(4068);
28609 				match(UPDATE);
28610 				}
28611 			}
28612 
28613 			setState(4072);
28614 			_errHandler.sync(this);
28615 			switch ( getInterpreter().adaptivePredict(_input,431,_ctx) ) {
28616 			case 1:
28617 				{
28618 				setState(4071);
28619 				match(COMMA_);
28620 				}
28621 				break;
28622 			}
28623 			setState(4075);
28624 			_errHandler.sync(this);
28625 			_la = _input.LA(1);
28626 			if (_la==DELETE) {
28627 				{
28628 				setState(4074);
28629 				match(DELETE);
28630 				}
28631 			}
28632 
28633 			setState(4078);
28634 			_errHandler.sync(this);
28635 			_la = _input.LA(1);
28636 			if (_la==COMMA_) {
28637 				{
28638 				setState(4077);
28639 				match(COMMA_);
28640 				}
28641 			}
28642 
28643 			setState(4082);
28644 			_errHandler.sync(this);
28645 			_la = _input.LA(1);
28646 			if (_la==WITH) {
28647 				{
28648 				setState(4080);
28649 				match(WITH);
28650 				setState(4081);
28651 				match(APPEND);
28652 				}
28653 			}
28654 
28655 			setState(4087);
28656 			_errHandler.sync(this);
28657 			_la = _input.LA(1);
28658 			if (_la==NOT) {
28659 				{
28660 				setState(4084);
28661 				match(NOT);
28662 				setState(4085);
28663 				match(FOR);
28664 				setState(4086);
28665 				match(REPLICATION);
28666 				}
28667 			}
28668 
28669 			setState(4089);
28670 			match(AS);
28671 			setState(4094);
28672 			_errHandler.sync(this);
28673 			switch (_input.LA(1)) {
28674 			case EOF:
28675 			case SEMI_:
28676 			case SELECT:
28677 			case INSERT:
28678 			case UPDATE:
28679 			case DELETE:
28680 			case CREATE:
28681 			case ALTER:
28682 			case DROP:
28683 			case TRUNCATE:
28684 			case SET:
28685 			case WITH:
28686 			case DECLARE:
28687 				{
28688 				setState(4090);
28689 				compoundStatement();
28690 				}
28691 				break;
28692 			case EXTERNAL:
28693 				{
28694 				setState(4091);
28695 				match(EXTERNAL);
28696 				setState(4092);
28697 				match(NAME);
28698 				setState(4093);
28699 				methodSpecifier();
28700 				}
28701 				break;
28702 			default:
28703 				throw new NoViableAltException(this);
28704 			}
28705 			}
28706 		}
28707 		catch (RecognitionException re) {
28708 			_localctx.exception = re;
28709 			_errHandler.reportError(this, re);
28710 			_errHandler.recover(this, re);
28711 		}
28712 		finally {
28713 			exitRule();
28714 		}
28715 		return _localctx;
28716 	}
28717 
28718 	public static class DmlTriggerOptionContext extends ParserRuleContext {
28719 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
28720 		public ExecuteAsClauseContext executeAsClause() {
28721 			return getRuleContext(ExecuteAsClauseContext.class,0);
28722 		}
28723 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
28724 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
28725 		public DmlTriggerOptionContext(ParserRuleContext parent, int invokingState) {
28726 			super(parent, invokingState);
28727 		}
28728 		@Override public int getRuleIndex() { return RULE_dmlTriggerOption; }
28729 		@Override
28730 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28731 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDmlTriggerOption(this);
28732 			else return visitor.visitChildren(this);
28733 		}
28734 	}
28735 
28736 	public final DmlTriggerOptionContext dmlTriggerOption() throws RecognitionException {
28737 		DmlTriggerOptionContext _localctx = new DmlTriggerOptionContext(_ctx, getState());
28738 		enterRule(_localctx, 586, RULE_dmlTriggerOption);
28739 		try {
28740 			setState(4101);
28741 			_errHandler.sync(this);
28742 			switch (_input.LA(1)) {
28743 			case ENCRYPTION:
28744 				enterOuterAlt(_localctx, 1);
28745 				{
28746 				setState(4096);
28747 				match(ENCRYPTION);
28748 				}
28749 				break;
28750 			case EXECUTE:
28751 			case EXEC:
28752 				enterOuterAlt(_localctx, 2);
28753 				{
28754 				setState(4097);
28755 				executeAsClause();
28756 				}
28757 				break;
28758 			case NATIVE_COMPILATION:
28759 				enterOuterAlt(_localctx, 3);
28760 				{
28761 				setState(4098);
28762 				match(NATIVE_COMPILATION);
28763 				}
28764 				break;
28765 			case SCHEMABINDING:
28766 				enterOuterAlt(_localctx, 4);
28767 				{
28768 				setState(4099);
28769 				match(SCHEMABINDING);
28770 				}
28771 				break;
28772 			case COMMA_:
28773 			case FOR:
28774 			case AFTER:
28775 			case INSTEAD:
28776 				enterOuterAlt(_localctx, 5);
28777 				{
28778 				}
28779 				break;
28780 			default:
28781 				throw new NoViableAltException(this);
28782 			}
28783 		}
28784 		catch (RecognitionException re) {
28785 			_localctx.exception = re;
28786 			_errHandler.reportError(this, re);
28787 			_errHandler.recover(this, re);
28788 		}
28789 		finally {
28790 			exitRule();
28791 		}
28792 		return _localctx;
28793 	}
28794 
28795 	public static class MethodSpecifierContext extends ParserRuleContext {
28796 		public List<NameContext> name() {
28797 			return getRuleContexts(NameContext.class);
28798 		}
28799 		public NameContext name(int i) {
28800 			return getRuleContext(NameContext.class,i);
28801 		}
28802 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
28803 		public TerminalNode DOT_(int i) {
28804 			return getToken(SQLServerStatementParser.DOT_, i);
28805 		}
28806 		public MethodSpecifierContext(ParserRuleContext parent, int invokingState) {
28807 			super(parent, invokingState);
28808 		}
28809 		@Override public int getRuleIndex() { return RULE_methodSpecifier; }
28810 		@Override
28811 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28812 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMethodSpecifier(this);
28813 			else return visitor.visitChildren(this);
28814 		}
28815 	}
28816 
28817 	public final MethodSpecifierContext methodSpecifier() throws RecognitionException {
28818 		MethodSpecifierContext _localctx = new MethodSpecifierContext(_ctx, getState());
28819 		enterRule(_localctx, 588, RULE_methodSpecifier);
28820 		try {
28821 			enterOuterAlt(_localctx, 1);
28822 			{
28823 			setState(4103);
28824 			name();
28825 			setState(4104);
28826 			match(DOT_);
28827 			setState(4105);
28828 			name();
28829 			setState(4106);
28830 			match(DOT_);
28831 			setState(4107);
28832 			name();
28833 			}
28834 		}
28835 		catch (RecognitionException re) {
28836 			_localctx.exception = re;
28837 			_errHandler.reportError(this, re);
28838 			_errHandler.recover(this, re);
28839 		}
28840 		finally {
28841 			exitRule();
28842 		}
28843 		return _localctx;
28844 	}
28845 
28846 	public static class TriggerTargetContext extends ParserRuleContext {
28847 		public TableNameContext tableName() {
28848 			return getRuleContext(TableNameContext.class,0);
28849 		}
28850 		public ViewNameContext viewName() {
28851 			return getRuleContext(ViewNameContext.class,0);
28852 		}
28853 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
28854 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
28855 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
28856 		public TriggerTargetContext(ParserRuleContext parent, int invokingState) {
28857 			super(parent, invokingState);
28858 		}
28859 		@Override public int getRuleIndex() { return RULE_triggerTarget; }
28860 		@Override
28861 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28862 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTriggerTarget(this);
28863 			else return visitor.visitChildren(this);
28864 		}
28865 	}
28866 
28867 	public final TriggerTargetContext triggerTarget() throws RecognitionException {
28868 		TriggerTargetContext _localctx = new TriggerTargetContext(_ctx, getState());
28869 		enterRule(_localctx, 590, RULE_triggerTarget);
28870 		try {
28871 			setState(4114);
28872 			_errHandler.sync(this);
28873 			switch ( getInterpreter().adaptivePredict(_input,438,_ctx) ) {
28874 			case 1:
28875 				enterOuterAlt(_localctx, 1);
28876 				{
28877 				setState(4109);
28878 				tableName();
28879 				}
28880 				break;
28881 			case 2:
28882 				enterOuterAlt(_localctx, 2);
28883 				{
28884 				setState(4110);
28885 				viewName();
28886 				}
28887 				break;
28888 			case 3:
28889 				enterOuterAlt(_localctx, 3);
28890 				{
28891 				setState(4111);
28892 				match(ALL);
28893 				setState(4112);
28894 				match(SERVER);
28895 				}
28896 				break;
28897 			case 4:
28898 				enterOuterAlt(_localctx, 4);
28899 				{
28900 				setState(4113);
28901 				match(DATABASE);
28902 				}
28903 				break;
28904 			}
28905 		}
28906 		catch (RecognitionException re) {
28907 			_localctx.exception = re;
28908 			_errHandler.reportError(this, re);
28909 			_errHandler.recover(this, re);
28910 		}
28911 		finally {
28912 			exitRule();
28913 		}
28914 		return _localctx;
28915 	}
28916 
28917 	public static class CreateOrAlterSequenceClauseContext extends ParserRuleContext {
28918 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
28919 		public DataTypeContext dataType() {
28920 			return getRuleContext(DataTypeContext.class,0);
28921 		}
28922 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
28923 		public ExprContext expr() {
28924 			return getRuleContext(ExprContext.class,0);
28925 		}
28926 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
28927 		public TerminalNode RESTART() { return getToken(SQLServerStatementParser.RESTART, 0); }
28928 		public TerminalNode INCREMENT() { return getToken(SQLServerStatementParser.INCREMENT, 0); }
28929 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
28930 		public TerminalNode MINVALUE() { return getToken(SQLServerStatementParser.MINVALUE, 0); }
28931 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
28932 		public TerminalNode MAXVALUE() { return getToken(SQLServerStatementParser.MAXVALUE, 0); }
28933 		public TerminalNode CACHE() { return getToken(SQLServerStatementParser.CACHE, 0); }
28934 		public TerminalNode CYCLE() { return getToken(SQLServerStatementParser.CYCLE, 0); }
28935 		public CreateOrAlterSequenceClauseContext(ParserRuleContext parent, int invokingState) {
28936 			super(parent, invokingState);
28937 		}
28938 		@Override public int getRuleIndex() { return RULE_createOrAlterSequenceClause; }
28939 		@Override
28940 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28941 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterSequenceClause(this);
28942 			else return visitor.visitChildren(this);
28943 		}
28944 	}
28945 
28946 	public final CreateOrAlterSequenceClauseContext createOrAlterSequenceClause() throws RecognitionException {
28947 		CreateOrAlterSequenceClauseContext _localctx = new CreateOrAlterSequenceClauseContext(_ctx, getState());
28948 		enterRule(_localctx, 592, RULE_createOrAlterSequenceClause);
28949 		int _la;
28950 		try {
28951 			setState(4144);
28952 			_errHandler.sync(this);
28953 			switch ( getInterpreter().adaptivePredict(_input,442,_ctx) ) {
28954 			case 1:
28955 				enterOuterAlt(_localctx, 1);
28956 				{
28957 				setState(4116);
28958 				match(AS);
28959 				setState(4117);
28960 				dataType();
28961 				}
28962 				break;
28963 			case 2:
28964 				enterOuterAlt(_localctx, 2);
28965 				{
28966 				setState(4118);
28967 				_la = _input.LA(1);
28968 				if ( !(_la==START || _la==RESTART) ) {
28969 				_errHandler.recoverInline(this);
28970 				}
28971 				else {
28972 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
28973 					_errHandler.reportMatch(this);
28974 					consume();
28975 				}
28976 				setState(4119);
28977 				match(WITH);
28978 				setState(4120);
28979 				expr(0);
28980 				}
28981 				break;
28982 			case 3:
28983 				enterOuterAlt(_localctx, 3);
28984 				{
28985 				setState(4121);
28986 				match(INCREMENT);
28987 				setState(4122);
28988 				match(BY);
28989 				setState(4123);
28990 				expr(0);
28991 				}
28992 				break;
28993 			case 4:
28994 				enterOuterAlt(_localctx, 4);
28995 				{
28996 				setState(4124);
28997 				match(MINVALUE);
28998 				setState(4126);
28999 				_errHandler.sync(this);
29000 				switch ( getInterpreter().adaptivePredict(_input,439,_ctx) ) {
29001 				case 1:
29002 					{
29003 					setState(4125);
29004 					expr(0);
29005 					}
29006 					break;
29007 				}
29008 				}
29009 				break;
29010 			case 5:
29011 				enterOuterAlt(_localctx, 5);
29012 				{
29013 				setState(4128);
29014 				match(NO);
29015 				setState(4129);
29016 				match(MINVALUE);
29017 				}
29018 				break;
29019 			case 6:
29020 				enterOuterAlt(_localctx, 6);
29021 				{
29022 				setState(4130);
29023 				match(MAXVALUE);
29024 				setState(4132);
29025 				_errHandler.sync(this);
29026 				switch ( getInterpreter().adaptivePredict(_input,440,_ctx) ) {
29027 				case 1:
29028 					{
29029 					setState(4131);
29030 					expr(0);
29031 					}
29032 					break;
29033 				}
29034 				}
29035 				break;
29036 			case 7:
29037 				enterOuterAlt(_localctx, 7);
29038 				{
29039 				setState(4134);
29040 				match(NO);
29041 				setState(4135);
29042 				match(MAXVALUE);
29043 				}
29044 				break;
29045 			case 8:
29046 				enterOuterAlt(_localctx, 8);
29047 				{
29048 				setState(4136);
29049 				match(CACHE);
29050 				setState(4137);
29051 				expr(0);
29052 				}
29053 				break;
29054 			case 9:
29055 				enterOuterAlt(_localctx, 9);
29056 				{
29057 				setState(4138);
29058 				match(NO);
29059 				setState(4139);
29060 				match(CACHE);
29061 				}
29062 				break;
29063 			case 10:
29064 				enterOuterAlt(_localctx, 10);
29065 				{
29066 				setState(4141);
29067 				_errHandler.sync(this);
29068 				_la = _input.LA(1);
29069 				if (_la==NO) {
29070 					{
29071 					setState(4140);
29072 					match(NO);
29073 					}
29074 				}
29075 
29076 				setState(4143);
29077 				match(CYCLE);
29078 				}
29079 				break;
29080 			}
29081 		}
29082 		catch (RecognitionException re) {
29083 			_localctx.exception = re;
29084 			_errHandler.reportError(this, re);
29085 			_errHandler.recover(this, re);
29086 		}
29087 		finally {
29088 			exitRule();
29089 		}
29090 		return _localctx;
29091 	}
29092 
29093 	public static class CreateIndexClauseContext extends ParserRuleContext {
29094 		public TerminalNode INCLUDE() { return getToken(SQLServerStatementParser.INCLUDE, 0); }
29095 		public ColumnNamesWithSortContext columnNamesWithSort() {
29096 			return getRuleContext(ColumnNamesWithSortContext.class,0);
29097 		}
29098 		public TerminalNode WHERE() { return getToken(SQLServerStatementParser.WHERE, 0); }
29099 		public FilterPredicateContext filterPredicate() {
29100 			return getRuleContext(FilterPredicateContext.class,0);
29101 		}
29102 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
29103 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
29104 		public TerminalNode LP_(int i) {
29105 			return getToken(SQLServerStatementParser.LP_, i);
29106 		}
29107 		public List<RelationalIndexOptionContext> relationalIndexOption() {
29108 			return getRuleContexts(RelationalIndexOptionContext.class);
29109 		}
29110 		public RelationalIndexOptionContext relationalIndexOption(int i) {
29111 			return getRuleContext(RelationalIndexOptionContext.class,i);
29112 		}
29113 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
29114 		public TerminalNode RP_(int i) {
29115 			return getToken(SQLServerStatementParser.RP_, i);
29116 		}
29117 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
29118 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
29119 		public SchemaNameContext schemaName() {
29120 			return getRuleContext(SchemaNameContext.class,0);
29121 		}
29122 		public ColumnNameContext columnName() {
29123 			return getRuleContext(ColumnNameContext.class,0);
29124 		}
29125 		public List<NameContext> name() {
29126 			return getRuleContexts(NameContext.class);
29127 		}
29128 		public NameContext name(int i) {
29129 			return getRuleContext(NameContext.class,i);
29130 		}
29131 		public StringLiteralsContext stringLiterals() {
29132 			return getRuleContext(StringLiteralsContext.class,0);
29133 		}
29134 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29135 		public TerminalNode COMMA_(int i) {
29136 			return getToken(SQLServerStatementParser.COMMA_, i);
29137 		}
29138 		public CreateIndexClauseContext(ParserRuleContext parent, int invokingState) {
29139 			super(parent, invokingState);
29140 		}
29141 		@Override public int getRuleIndex() { return RULE_createIndexClause; }
29142 		@Override
29143 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29144 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndexClause(this);
29145 			else return visitor.visitChildren(this);
29146 		}
29147 	}
29148 
29149 	public final CreateIndexClauseContext createIndexClause() throws RecognitionException {
29150 		CreateIndexClauseContext _localctx = new CreateIndexClauseContext(_ctx, getState());
29151 		enterRule(_localctx, 594, RULE_createIndexClause);
29152 		int _la;
29153 		try {
29154 			enterOuterAlt(_localctx, 1);
29155 			{
29156 			setState(4148);
29157 			_errHandler.sync(this);
29158 			_la = _input.LA(1);
29159 			if (_la==INCLUDE) {
29160 				{
29161 				setState(4146);
29162 				match(INCLUDE);
29163 				setState(4147);
29164 				columnNamesWithSort();
29165 				}
29166 			}
29167 
29168 			setState(4152);
29169 			_errHandler.sync(this);
29170 			_la = _input.LA(1);
29171 			if (_la==WHERE) {
29172 				{
29173 				setState(4150);
29174 				match(WHERE);
29175 				setState(4151);
29176 				filterPredicate();
29177 				}
29178 			}
29179 
29180 			setState(4166);
29181 			_errHandler.sync(this);
29182 			_la = _input.LA(1);
29183 			if (_la==WITH) {
29184 				{
29185 				setState(4154);
29186 				match(WITH);
29187 				setState(4155);
29188 				match(LP_);
29189 				setState(4156);
29190 				relationalIndexOption();
29191 				setState(4161);
29192 				_errHandler.sync(this);
29193 				_la = _input.LA(1);
29194 				while (_la==COMMA_) {
29195 					{
29196 					{
29197 					setState(4157);
29198 					match(COMMA_);
29199 					setState(4158);
29200 					relationalIndexOption();
29201 					}
29202 					}
29203 					setState(4163);
29204 					_errHandler.sync(this);
29205 					_la = _input.LA(1);
29206 				}
29207 				setState(4164);
29208 				match(RP_);
29209 				}
29210 			}
29211 
29212 			setState(4177);
29213 			_errHandler.sync(this);
29214 			_la = _input.LA(1);
29215 			if (_la==ON) {
29216 				{
29217 				setState(4168);
29218 				match(ON);
29219 				setState(4175);
29220 				_errHandler.sync(this);
29221 				switch ( getInterpreter().adaptivePredict(_input,447,_ctx) ) {
29222 				case 1:
29223 					{
29224 					setState(4169);
29225 					schemaName();
29226 					setState(4170);
29227 					match(LP_);
29228 					setState(4171);
29229 					columnName();
29230 					setState(4172);
29231 					match(RP_);
29232 					}
29233 					break;
29234 				case 2:
29235 					{
29236 					setState(4174);
29237 					name();
29238 					}
29239 					break;
29240 				}
29241 				}
29242 			}
29243 
29244 			setState(4184);
29245 			_errHandler.sync(this);
29246 			_la = _input.LA(1);
29247 			if (_la==FILESTREAM_ON) {
29248 				{
29249 				setState(4179);
29250 				match(FILESTREAM_ON);
29251 				setState(4182);
29252 				_errHandler.sync(this);
29253 				switch (_input.LA(1)) {
29254 				case TRUNCATE:
29255 				case SCHEMA:
29256 				case COLUMNS:
29257 				case PRECISION:
29258 				case FUNCTION:
29259 				case TRIGGER:
29260 				case CAST:
29261 				case SUBSTRING:
29262 				case OFF:
29263 				case GROUP:
29264 				case LIMIT:
29265 				case OFFSET:
29266 				case SAVEPOINT:
29267 				case BOOLEAN:
29268 				case ARRAY:
29269 				case DATE:
29270 				case LOCALTIME:
29271 				case LOCALTIMESTAMP:
29272 				case QUARTER:
29273 				case MONTH:
29274 				case WEEK:
29275 				case DAY:
29276 				case SECOND:
29277 				case MICROSECOND:
29278 				case MAX:
29279 				case MIN:
29280 				case SUM:
29281 				case COUNT:
29282 				case AVG:
29283 				case ENABLE:
29284 				case DISABLE:
29285 				case INSTANCE:
29286 				case DO:
29287 				case DEFINER:
29288 				case SQL:
29289 				case CASCADED:
29290 				case LOCAL:
29291 				case NEXT:
29292 				case NAME:
29293 				case INTEGER:
29294 				case TYPE:
29295 				case TEXT:
29296 				case VIEWS:
29297 				case READ_ONLY:
29298 				case DATABASE:
29299 				case RETURNS:
29300 				case DATEPART:
29301 				case PASSWORD:
29302 				case BINARY:
29303 				case HIDDEN_:
29304 				case MOD:
29305 				case PARTITION:
29306 				case PARTITIONS:
29307 				case TOP:
29308 				case ROW:
29309 				case ROWS:
29310 				case XOR:
29311 				case ALWAYS:
29312 				case ROLE:
29313 				case START:
29314 				case ALGORITHM:
29315 				case AUTO:
29316 				case BLOCKERS:
29317 				case CLUSTERED:
29318 				case NONCLUSTERED:
29319 				case COLUMNSTORE:
29320 				case CONTENT:
29321 				case YEARS:
29322 				case MONTHS:
29323 				case WEEKS:
29324 				case DAYS:
29325 				case MINUTES:
29326 				case DENY:
29327 				case DETERMINISTIC:
29328 				case DISTRIBUTION:
29329 				case DOCUMENT:
29330 				case DURABILITY:
29331 				case ENCRYPTED:
29332 				case FILESTREAM:
29333 				case FILETABLE:
29334 				case FILLFACTOR:
29335 				case FOLLOWING:
29336 				case HASH:
29337 				case HEAP:
29338 				case INBOUND:
29339 				case OUTBOUND:
29340 				case UNBOUNDED:
29341 				case INFINITE:
29342 				case LOGIN:
29343 				case MASKED:
29344 				case MAXDOP:
29345 				case MOVE:
29346 				case NOCHECK:
29347 				case OBJECT:
29348 				case ONLINE:
29349 				case OVER:
29350 				case PAGE:
29351 				case PAUSED:
29352 				case PERIOD:
29353 				case PERSISTED:
29354 				case PRECEDING:
29355 				case RANDOMIZED:
29356 				case RANGE:
29357 				case REBUILD:
29358 				case REPLICATE:
29359 				case REPLICATION:
29360 				case RESUMABLE:
29361 				case ROWGUIDCOL:
29362 				case SAVE:
29363 				case SELF:
29364 				case SPARSE:
29365 				case SWITCH:
29366 				case TRAN:
29367 				case TRANCOUNT:
29368 				case CONTROL:
29369 				case CONCAT:
29370 				case TAKE:
29371 				case OWNERSHIP:
29372 				case DEFINITION:
29373 				case APPLICATION:
29374 				case ASSEMBLY:
29375 				case SYMMETRIC:
29376 				case ASYMMETRIC:
29377 				case SERVER:
29378 				case RECEIVE:
29379 				case CHANGE:
29380 				case TRACE:
29381 				case TRACKING:
29382 				case RESOURCES:
29383 				case SETTINGS:
29384 				case STATE:
29385 				case AVAILABILITY:
29386 				case CREDENTIAL:
29387 				case ENDPOINT:
29388 				case EVENT:
29389 				case NOTIFICATION:
29390 				case LINKED:
29391 				case AUDIT:
29392 				case DDL:
29393 				case XML:
29394 				case IMPERSONATE:
29395 				case SECURABLES:
29396 				case AUTHENTICATE:
29397 				case EXTERNAL:
29398 				case ACCESS:
29399 				case ADMINISTER:
29400 				case BULK:
29401 				case OPERATIONS:
29402 				case UNSAFE:
29403 				case SHUTDOWN:
29404 				case SCOPED:
29405 				case CONFIGURATION:
29406 				case DATASPACE:
29407 				case SERVICE:
29408 				case CERTIFICATE:
29409 				case CONTRACT:
29410 				case ENCRYPTION:
29411 				case MASTER:
29412 				case DATA:
29413 				case SOURCE:
29414 				case FILE:
29415 				case FORMAT:
29416 				case LIBRARY:
29417 				case FULLTEXT:
29418 				case MASK:
29419 				case UNMASK:
29420 				case MESSAGE:
29421 				case REMOTE:
29422 				case BINDING:
29423 				case ROUTE:
29424 				case SECURITY:
29425 				case POLICY:
29426 				case AGGREGATE:
29427 				case QUEUE:
29428 				case RULE:
29429 				case SYNONYM:
29430 				case COLLECTION:
29431 				case SCRIPT:
29432 				case KILL:
29433 				case BACKUP:
29434 				case LOG:
29435 				case SHOWPLAN:
29436 				case SUBSCRIBE:
29437 				case QUERY:
29438 				case NOTIFICATIONS:
29439 				case CHECKPOINT:
29440 				case SEQUENCE:
29441 				case ABORT_AFTER_WAIT:
29442 				case ALLOW_PAGE_LOCKS:
29443 				case ALLOW_ROW_LOCKS:
29444 				case ALL_SPARSE_COLUMNS:
29445 				case BUCKET_COUNT:
29446 				case COLUMNSTORE_ARCHIVE:
29447 				case COLUMN_ENCRYPTION_KEY:
29448 				case COLUMN_SET:
29449 				case COMPRESSION_DELAY:
29450 				case DATABASE_DEAULT:
29451 				case DATA_COMPRESSION:
29452 				case DATA_CONSISTENCY_CHECK:
29453 				case ENCRYPTION_TYPE:
29454 				case SYSTEM_TIME:
29455 				case SYSTEM_VERSIONING:
29456 				case TEXTIMAGE_ON:
29457 				case WAIT_AT_LOW_PRIORITY:
29458 				case STATISTICS_INCREMENTAL:
29459 				case STATISTICS_NORECOMPUTE:
29460 				case ROUND_ROBIN:
29461 				case SCHEMA_AND_DATA:
29462 				case SCHEMA_ONLY:
29463 				case SORT_IN_TEMPDB:
29464 				case IGNORE_DUP_KEY:
29465 				case IMPLICIT_TRANSACTIONS:
29466 				case MAX_DURATION:
29467 				case MEMORY_OPTIMIZED:
29468 				case MIGRATION_STATE:
29469 				case PAD_INDEX:
29470 				case REMOTE_DATA_ARCHIVE:
29471 				case FILESTREAM_ON:
29472 				case FILETABLE_COLLATE_FILENAME:
29473 				case FILETABLE_DIRECTORY:
29474 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
29475 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
29476 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
29477 				case FILTER_PREDICATE:
29478 				case HISTORY_RETENTION_PERIOD:
29479 				case HISTORY_TABLE:
29480 				case LOCK_ESCALATION:
29481 				case DROP_EXISTING:
29482 				case ROW_NUMBER:
29483 				case FIRST:
29484 				case DATETIME2:
29485 				case OUTPUT:
29486 				case INSERTED:
29487 				case DELETED:
29488 				case FILENAME:
29489 				case SIZE:
29490 				case MAXSIZE:
29491 				case FILEGROWTH:
29492 				case UNLIMITED:
29493 				case KB:
29494 				case MB:
29495 				case GB:
29496 				case TB:
29497 				case CONTAINS:
29498 				case MEMORY_OPTIMIZED_DATA:
29499 				case FILEGROUP:
29500 				case NON_TRANSACTED_ACCESS:
29501 				case DB_CHAINING:
29502 				case TRUSTWORTHY:
29503 				case FORWARD_ONLY:
29504 				case KEYSET:
29505 				case FAST_FORWARD:
29506 				case SCROLL_LOCKS:
29507 				case OPTIMISTIC:
29508 				case TYPE_WARNING:
29509 				case SCHEMABINDING:
29510 				case CALLER:
29511 				case OWNER:
29512 				case SNAPSHOT:
29513 				case REPEATABLE:
29514 				case SERIALIZABLE:
29515 				case NATIVE_COMPILATION:
29516 				case VIEW_METADATA:
29517 				case INSTEAD:
29518 				case APPEND:
29519 				case INCREMENT:
29520 				case CACHE:
29521 				case MINVALUE:
29522 				case MAXVALUE:
29523 				case RESTART:
29524 				case LOB_COMPACTION:
29525 				case COMPRESS_ALL_ROW_GROUPS:
29526 				case REORGANIZE:
29527 				case RESUME:
29528 				case PAUSE:
29529 				case ABORT:
29530 				case ACCELERATED_DATABASE_RECOVERY:
29531 				case PERSISTENT_VERSION_STORE_FILEGROUP:
29532 				case IMMEDIATE:
29533 				case NO_WAIT:
29534 				case TARGET_RECOVERY_TIME:
29535 				case SECONDS:
29536 				case HONOR_BROKER_PRIORITY:
29537 				case ERROR_BROKER_CONVERSATIONS:
29538 				case NEW_BROKER:
29539 				case DISABLE_BROKER:
29540 				case ENABLE_BROKER:
29541 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
29542 				case READ_COMMITTED_SNAPSHOT:
29543 				case ALLOW_SNAPSHOT_ISOLATION:
29544 				case RECURSIVE_TRIGGERS:
29545 				case QUOTED_IDENTIFIER:
29546 				case NUMERIC_ROUNDABORT:
29547 				case CONCAT_NULL_YIELDS_NULL:
29548 				case COMPATIBILITY_LEVEL:
29549 				case ARITHABORT:
29550 				case ANSI_WARNINGS:
29551 				case ANSI_PADDING:
29552 				case ANSI_NULLS:
29553 				case ANSI_NULL_DEFAULT:
29554 				case PAGE_VERIFY:
29555 				case CHECKSUM:
29556 				case TORN_PAGE_DETECTION:
29557 				case BULK_LOGGED:
29558 				case RECOVERY:
29559 				case TOTAL_EXECUTION_CPU_TIME_MS:
29560 				case TOTAL_COMPILE_CPU_TIME_MS:
29561 				case STALE_CAPTURE_POLICY_THRESHOLD:
29562 				case EXECUTION_COUNT:
29563 				case QUERY_CAPTURE_POLICY:
29564 				case WAIT_STATS_CAPTURE_MODE:
29565 				case MAX_PLANS_PER_QUERY:
29566 				case QUERY_CAPTURE_MODE:
29567 				case SIZE_BASED_CLEANUP_MODE:
29568 				case INTERVAL_LENGTH_MINUTES:
29569 				case MAX_STORAGE_SIZE_MB:
29570 				case DATA_FLUSH_INTERVAL_SECONDS:
29571 				case CLEANUP_POLICY:
29572 				case CUSTOM:
29573 				case STALE_QUERY_THRESHOLD_DAYS:
29574 				case OPERATION_MODE:
29575 				case QUERY_STORE:
29576 				case CURSOR_DEFAULT:
29577 				case GLOBAL:
29578 				case CURSOR_CLOSE_ON_COMMIT:
29579 				case HOURS:
29580 				case CHANGE_RETENTION:
29581 				case AUTO_CLEANUP:
29582 				case CHANGE_TRACKING:
29583 				case AUTOMATIC_TUNING:
29584 				case FORCE_LAST_GOOD_PLAN:
29585 				case AUTO_UPDATE_STATISTICS_ASYNC:
29586 				case AUTO_UPDATE_STATISTICS:
29587 				case AUTO_SHRINK:
29588 				case AUTO_CREATE_STATISTICS:
29589 				case INCREMENTAL:
29590 				case AUTO_CLOSE:
29591 				case DATA_RETENTION:
29592 				case TEMPORAL_HISTORY_RETENTION:
29593 				case EDITION:
29594 				case MIXED_PAGE_ALLOCATION:
29595 				case DISABLED:
29596 				case ALLOWED:
29597 				case HADR:
29598 				case MULTI_USER:
29599 				case RESTRICTED_USER:
29600 				case SINGLE_USER:
29601 				case OFFLINE:
29602 				case EMERGENCY:
29603 				case SUSPEND:
29604 				case DATE_CORRELATION_OPTIMIZATION:
29605 				case ELASTIC_POOL:
29606 				case SERVICE_OBJECTIVE:
29607 				case DATABASE_NAME:
29608 				case ALLOW_CONNECTIONS:
29609 				case GEO:
29610 				case NAMED:
29611 				case DATEFIRST:
29612 				case BACKUP_STORAGE_REDUNDANCY:
29613 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
29614 				case SECONDARY:
29615 				case FAILOVER:
29616 				case DEFAULT_FULLTEXT_LANGUAGE:
29617 				case DEFAULT_LANGUAGE:
29618 				case INLINE:
29619 				case NESTED_TRIGGERS:
29620 				case TRANSFORM_NOISE_WORDS:
29621 				case TWO_DIGIT_YEAR_CUTOFF:
29622 				case PERSISTENT_LOG_BUFFER:
29623 				case DIRECTORY_NAME:
29624 				case DATEFORMAT:
29625 				case DELAYED_DURABILITY:
29626 				case AUTHORIZATION:
29627 				case TRANSFER:
29628 				case PROVIDER:
29629 				case SEARCH:
29630 				case MEMBER:
29631 				case IDENTIFIER_:
29632 				case DELIMITED_IDENTIFIER_:
29633 					{
29634 					setState(4180);
29635 					name();
29636 					}
29637 					break;
29638 				case STRING_:
29639 				case NCHAR_TEXT:
29640 					{
29641 					setState(4181);
29642 					stringLiterals();
29643 					}
29644 					break;
29645 				default:
29646 					throw new NoViableAltException(this);
29647 				}
29648 				}
29649 			}
29650 
29651 			}
29652 		}
29653 		catch (RecognitionException re) {
29654 			_localctx.exception = re;
29655 			_errHandler.reportError(this, re);
29656 			_errHandler.recover(this, re);
29657 		}
29658 		finally {
29659 			exitRule();
29660 		}
29661 		return _localctx;
29662 	}
29663 
29664 	public static class FilterPredicateContext extends ParserRuleContext {
29665 		public List<ConjunctContext> conjunct() {
29666 			return getRuleContexts(ConjunctContext.class);
29667 		}
29668 		public ConjunctContext conjunct(int i) {
29669 			return getRuleContext(ConjunctContext.class,i);
29670 		}
29671 		public List<TerminalNode> AND() { return getTokens(SQLServerStatementParser.AND); }
29672 		public TerminalNode AND(int i) {
29673 			return getToken(SQLServerStatementParser.AND, i);
29674 		}
29675 		public FilterPredicateContext(ParserRuleContext parent, int invokingState) {
29676 			super(parent, invokingState);
29677 		}
29678 		@Override public int getRuleIndex() { return RULE_filterPredicate; }
29679 		@Override
29680 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29681 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFilterPredicate(this);
29682 			else return visitor.visitChildren(this);
29683 		}
29684 	}
29685 
29686 	public final FilterPredicateContext filterPredicate() throws RecognitionException {
29687 		FilterPredicateContext _localctx = new FilterPredicateContext(_ctx, getState());
29688 		enterRule(_localctx, 596, RULE_filterPredicate);
29689 		int _la;
29690 		try {
29691 			enterOuterAlt(_localctx, 1);
29692 			{
29693 			setState(4186);
29694 			conjunct();
29695 			setState(4191);
29696 			_errHandler.sync(this);
29697 			_la = _input.LA(1);
29698 			while (_la==AND) {
29699 				{
29700 				{
29701 				setState(4187);
29702 				match(AND);
29703 				setState(4188);
29704 				conjunct();
29705 				}
29706 				}
29707 				setState(4193);
29708 				_errHandler.sync(this);
29709 				_la = _input.LA(1);
29710 			}
29711 			}
29712 		}
29713 		catch (RecognitionException re) {
29714 			_localctx.exception = re;
29715 			_errHandler.reportError(this, re);
29716 			_errHandler.recover(this, re);
29717 		}
29718 		finally {
29719 			exitRule();
29720 		}
29721 		return _localctx;
29722 	}
29723 
29724 	public static class ConjunctContext extends ParserRuleContext {
29725 		public ColumnNameContext columnName() {
29726 			return getRuleContext(ColumnNameContext.class,0);
29727 		}
29728 		public TerminalNode IN() { return getToken(SQLServerStatementParser.IN, 0); }
29729 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
29730 		public List<ExprContext> expr() {
29731 			return getRuleContexts(ExprContext.class);
29732 		}
29733 		public ExprContext expr(int i) {
29734 			return getRuleContext(ExprContext.class,i);
29735 		}
29736 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
29737 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29738 		public TerminalNode COMMA_(int i) {
29739 			return getToken(SQLServerStatementParser.COMMA_, i);
29740 		}
29741 		public ComparisonOperatorContext comparisonOperator() {
29742 			return getRuleContext(ComparisonOperatorContext.class,0);
29743 		}
29744 		public ConjunctContext(ParserRuleContext parent, int invokingState) {
29745 			super(parent, invokingState);
29746 		}
29747 		@Override public int getRuleIndex() { return RULE_conjunct; }
29748 		@Override
29749 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29750 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConjunct(this);
29751 			else return visitor.visitChildren(this);
29752 		}
29753 	}
29754 
29755 	public final ConjunctContext conjunct() throws RecognitionException {
29756 		ConjunctContext _localctx = new ConjunctContext(_ctx, getState());
29757 		enterRule(_localctx, 598, RULE_conjunct);
29758 		int _la;
29759 		try {
29760 			setState(4211);
29761 			_errHandler.sync(this);
29762 			switch ( getInterpreter().adaptivePredict(_input,453,_ctx) ) {
29763 			case 1:
29764 				enterOuterAlt(_localctx, 1);
29765 				{
29766 				setState(4194);
29767 				columnName();
29768 				setState(4195);
29769 				match(IN);
29770 				setState(4196);
29771 				match(LP_);
29772 				setState(4197);
29773 				expr(0);
29774 				setState(4202);
29775 				_errHandler.sync(this);
29776 				_la = _input.LA(1);
29777 				while (_la==COMMA_) {
29778 					{
29779 					{
29780 					setState(4198);
29781 					match(COMMA_);
29782 					setState(4199);
29783 					expr(0);
29784 					}
29785 					}
29786 					setState(4204);
29787 					_errHandler.sync(this);
29788 					_la = _input.LA(1);
29789 				}
29790 				setState(4205);
29791 				match(RP_);
29792 				}
29793 				break;
29794 			case 2:
29795 				enterOuterAlt(_localctx, 2);
29796 				{
29797 				setState(4207);
29798 				columnName();
29799 				setState(4208);
29800 				comparisonOperator();
29801 				setState(4209);
29802 				expr(0);
29803 				}
29804 				break;
29805 			}
29806 		}
29807 		catch (RecognitionException re) {
29808 			_localctx.exception = re;
29809 			_errHandler.reportError(this, re);
29810 			_errHandler.recover(this, re);
29811 		}
29812 		finally {
29813 			exitRule();
29814 		}
29815 		return _localctx;
29816 	}
29817 
29818 	public static class AlterIndexClauseContext extends ParserRuleContext {
29819 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
29820 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
29821 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
29822 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
29823 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
29824 		public List<RelationalIndexOptionContext> relationalIndexOption() {
29825 			return getRuleContexts(RelationalIndexOptionContext.class);
29826 		}
29827 		public RelationalIndexOptionContext relationalIndexOption(int i) {
29828 			return getRuleContext(RelationalIndexOptionContext.class,i);
29829 		}
29830 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
29831 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
29832 		public ExprContext expr() {
29833 			return getRuleContext(ExprContext.class,0);
29834 		}
29835 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29836 		public TerminalNode COMMA_(int i) {
29837 			return getToken(SQLServerStatementParser.COMMA_, i);
29838 		}
29839 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
29840 		public TerminalNode REORGANIZE() { return getToken(SQLServerStatementParser.REORGANIZE, 0); }
29841 		public ReorganizeOptionContext reorganizeOption() {
29842 			return getRuleContext(ReorganizeOptionContext.class,0);
29843 		}
29844 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
29845 		public List<SetIndexOptionContext> setIndexOption() {
29846 			return getRuleContexts(SetIndexOptionContext.class);
29847 		}
29848 		public SetIndexOptionContext setIndexOption(int i) {
29849 			return getRuleContext(SetIndexOptionContext.class,i);
29850 		}
29851 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
29852 		public List<ResumableIndexOptionsContext> resumableIndexOptions() {
29853 			return getRuleContexts(ResumableIndexOptionsContext.class);
29854 		}
29855 		public ResumableIndexOptionsContext resumableIndexOptions(int i) {
29856 			return getRuleContext(ResumableIndexOptionsContext.class,i);
29857 		}
29858 		public TerminalNode PAUSE() { return getToken(SQLServerStatementParser.PAUSE, 0); }
29859 		public TerminalNode ABORT() { return getToken(SQLServerStatementParser.ABORT, 0); }
29860 		public AlterIndexClauseContext(ParserRuleContext parent, int invokingState) {
29861 			super(parent, invokingState);
29862 		}
29863 		@Override public int getRuleIndex() { return RULE_alterIndexClause; }
29864 		@Override
29865 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29866 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterIndexClause(this);
29867 			else return visitor.visitChildren(this);
29868 		}
29869 	}
29870 
29871 	public final AlterIndexClauseContext alterIndexClause() throws RecognitionException {
29872 		AlterIndexClauseContext _localctx = new AlterIndexClauseContext(_ctx, getState());
29873 		enterRule(_localctx, 600, RULE_alterIndexClause);
29874 		int _la;
29875 		try {
29876 			setState(4275);
29877 			_errHandler.sync(this);
29878 			switch (_input.LA(1)) {
29879 			case REBUILD:
29880 				enterOuterAlt(_localctx, 1);
29881 				{
29882 				setState(4213);
29883 				match(REBUILD);
29884 				setState(4220);
29885 				_errHandler.sync(this);
29886 				_la = _input.LA(1);
29887 				if (_la==PARTITION) {
29888 					{
29889 					setState(4214);
29890 					match(PARTITION);
29891 					setState(4215);
29892 					match(EQ_);
29893 					setState(4218);
29894 					_errHandler.sync(this);
29895 					switch (_input.LA(1)) {
29896 					case ALL:
29897 						{
29898 						setState(4216);
29899 						match(ALL);
29900 						}
29901 						break;
29902 					case NOT_:
29903 					case TILDE_:
29904 					case PLUS_:
29905 					case MINUS_:
29906 					case LP_:
29907 					case LBE_:
29908 					case QUESTION_:
29909 					case DOLLAR_:
29910 					case TRUNCATE:
29911 					case SCHEMA:
29912 					case COLUMNS:
29913 					case PRECISION:
29914 					case FUNCTION:
29915 					case TRIGGER:
29916 					case CASE:
29917 					case CAST:
29918 					case SUBSTRING:
29919 					case OFF:
29920 					case IF:
29921 					case NOT:
29922 					case NULL:
29923 					case TRUE:
29924 					case FALSE:
29925 					case EXISTS:
29926 					case GROUP:
29927 					case LIMIT:
29928 					case OFFSET:
29929 					case SAVEPOINT:
29930 					case BOOLEAN:
29931 					case CHAR:
29932 					case ARRAY:
29933 					case INTERVAL:
29934 					case DATE:
29935 					case TIME:
29936 					case TIMESTAMP:
29937 					case LOCALTIME:
29938 					case LOCALTIMESTAMP:
29939 					case QUARTER:
29940 					case MONTH:
29941 					case WEEK:
29942 					case DAY:
29943 					case SECOND:
29944 					case MICROSECOND:
29945 					case MAX:
29946 					case MIN:
29947 					case SUM:
29948 					case COUNT:
29949 					case AVG:
29950 					case ENABLE:
29951 					case DISABLE:
29952 					case INSTANCE:
29953 					case DO:
29954 					case DEFINER:
29955 					case SQL:
29956 					case CASCADED:
29957 					case LOCAL:
29958 					case NEXT:
29959 					case NAME:
29960 					case INTEGER:
29961 					case TYPE:
29962 					case TEXT:
29963 					case VIEWS:
29964 					case READ_ONLY:
29965 					case DATABASE:
29966 					case RETURNS:
29967 					case DATEPART:
29968 					case PASSWORD:
29969 					case BINARY:
29970 					case HIDDEN_:
29971 					case MOD:
29972 					case PARTITION:
29973 					case PARTITIONS:
29974 					case TOP:
29975 					case ROW:
29976 					case ROWS:
29977 					case XOR:
29978 					case ALWAYS:
29979 					case ROLE:
29980 					case START:
29981 					case ALGORITHM:
29982 					case AUTO:
29983 					case BLOCKERS:
29984 					case CLUSTERED:
29985 					case NONCLUSTERED:
29986 					case COLUMNSTORE:
29987 					case CONTENT:
29988 					case CONVERT:
29989 					case YEARS:
29990 					case MONTHS:
29991 					case WEEKS:
29992 					case DAYS:
29993 					case MINUTES:
29994 					case DENY:
29995 					case DETERMINISTIC:
29996 					case DISTRIBUTION:
29997 					case DOCUMENT:
29998 					case DURABILITY:
29999 					case ENCRYPTED:
30000 					case FILESTREAM:
30001 					case FILETABLE:
30002 					case FILLFACTOR:
30003 					case FOLLOWING:
30004 					case HASH:
30005 					case HEAP:
30006 					case INBOUND:
30007 					case OUTBOUND:
30008 					case UNBOUNDED:
30009 					case INFINITE:
30010 					case LOGIN:
30011 					case MASKED:
30012 					case MAXDOP:
30013 					case MOVE:
30014 					case NOCHECK:
30015 					case OBJECT:
30016 					case ONLINE:
30017 					case OVER:
30018 					case PAGE:
30019 					case PAUSED:
30020 					case PERIOD:
30021 					case PERSISTED:
30022 					case PRECEDING:
30023 					case RANDOMIZED:
30024 					case RANGE:
30025 					case REBUILD:
30026 					case REPLICATE:
30027 					case REPLICATION:
30028 					case RESUMABLE:
30029 					case ROWGUIDCOL:
30030 					case SAVE:
30031 					case SELF:
30032 					case SPARSE:
30033 					case SWITCH:
30034 					case TRAN:
30035 					case TRANCOUNT:
30036 					case CONTROL:
30037 					case CONCAT:
30038 					case TAKE:
30039 					case OWNERSHIP:
30040 					case DEFINITION:
30041 					case APPLICATION:
30042 					case ASSEMBLY:
30043 					case SYMMETRIC:
30044 					case ASYMMETRIC:
30045 					case SERVER:
30046 					case RECEIVE:
30047 					case CHANGE:
30048 					case TRACE:
30049 					case TRACKING:
30050 					case RESOURCES:
30051 					case SETTINGS:
30052 					case STATE:
30053 					case AVAILABILITY:
30054 					case CREDENTIAL:
30055 					case ENDPOINT:
30056 					case EVENT:
30057 					case NOTIFICATION:
30058 					case LINKED:
30059 					case AUDIT:
30060 					case DDL:
30061 					case XML:
30062 					case IMPERSONATE:
30063 					case SECURABLES:
30064 					case AUTHENTICATE:
30065 					case EXTERNAL:
30066 					case ACCESS:
30067 					case ADMINISTER:
30068 					case BULK:
30069 					case OPERATIONS:
30070 					case UNSAFE:
30071 					case SHUTDOWN:
30072 					case SCOPED:
30073 					case CONFIGURATION:
30074 					case DATASPACE:
30075 					case SERVICE:
30076 					case CERTIFICATE:
30077 					case CONTRACT:
30078 					case ENCRYPTION:
30079 					case MASTER:
30080 					case DATA:
30081 					case SOURCE:
30082 					case FILE:
30083 					case FORMAT:
30084 					case LIBRARY:
30085 					case FULLTEXT:
30086 					case MASK:
30087 					case UNMASK:
30088 					case MESSAGE:
30089 					case REMOTE:
30090 					case BINDING:
30091 					case ROUTE:
30092 					case SECURITY:
30093 					case POLICY:
30094 					case AGGREGATE:
30095 					case QUEUE:
30096 					case RULE:
30097 					case SYNONYM:
30098 					case COLLECTION:
30099 					case SCRIPT:
30100 					case KILL:
30101 					case BACKUP:
30102 					case LOG:
30103 					case SHOWPLAN:
30104 					case SUBSCRIBE:
30105 					case QUERY:
30106 					case NOTIFICATIONS:
30107 					case CHECKPOINT:
30108 					case SEQUENCE:
30109 					case ABORT_AFTER_WAIT:
30110 					case ALLOW_PAGE_LOCKS:
30111 					case ALLOW_ROW_LOCKS:
30112 					case ALL_SPARSE_COLUMNS:
30113 					case BUCKET_COUNT:
30114 					case COLUMNSTORE_ARCHIVE:
30115 					case COLUMN_ENCRYPTION_KEY:
30116 					case COLUMN_SET:
30117 					case COMPRESSION_DELAY:
30118 					case DATABASE_DEAULT:
30119 					case DATA_COMPRESSION:
30120 					case DATA_CONSISTENCY_CHECK:
30121 					case ENCRYPTION_TYPE:
30122 					case SYSTEM_TIME:
30123 					case SYSTEM_VERSIONING:
30124 					case TEXTIMAGE_ON:
30125 					case WAIT_AT_LOW_PRIORITY:
30126 					case STATISTICS_INCREMENTAL:
30127 					case STATISTICS_NORECOMPUTE:
30128 					case ROUND_ROBIN:
30129 					case SCHEMA_AND_DATA:
30130 					case SCHEMA_ONLY:
30131 					case SORT_IN_TEMPDB:
30132 					case IGNORE_DUP_KEY:
30133 					case IMPLICIT_TRANSACTIONS:
30134 					case MAX_DURATION:
30135 					case MEMORY_OPTIMIZED:
30136 					case MIGRATION_STATE:
30137 					case PAD_INDEX:
30138 					case REMOTE_DATA_ARCHIVE:
30139 					case FILESTREAM_ON:
30140 					case FILETABLE_COLLATE_FILENAME:
30141 					case FILETABLE_DIRECTORY:
30142 					case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
30143 					case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
30144 					case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
30145 					case FILTER_PREDICATE:
30146 					case HISTORY_RETENTION_PERIOD:
30147 					case HISTORY_TABLE:
30148 					case LOCK_ESCALATION:
30149 					case DROP_EXISTING:
30150 					case ROW_NUMBER:
30151 					case FIRST:
30152 					case DATETIME2:
30153 					case OUTPUT:
30154 					case INSERTED:
30155 					case DELETED:
30156 					case FILENAME:
30157 					case SIZE:
30158 					case MAXSIZE:
30159 					case FILEGROWTH:
30160 					case UNLIMITED:
30161 					case KB:
30162 					case MB:
30163 					case GB:
30164 					case TB:
30165 					case CONTAINS:
30166 					case MEMORY_OPTIMIZED_DATA:
30167 					case FILEGROUP:
30168 					case NON_TRANSACTED_ACCESS:
30169 					case DB_CHAINING:
30170 					case TRUSTWORTHY:
30171 					case FORWARD_ONLY:
30172 					case KEYSET:
30173 					case FAST_FORWARD:
30174 					case SCROLL_LOCKS:
30175 					case OPTIMISTIC:
30176 					case TYPE_WARNING:
30177 					case SCHEMABINDING:
30178 					case CALLER:
30179 					case OWNER:
30180 					case SNAPSHOT:
30181 					case REPEATABLE:
30182 					case SERIALIZABLE:
30183 					case NATIVE_COMPILATION:
30184 					case VIEW_METADATA:
30185 					case INSTEAD:
30186 					case APPEND:
30187 					case INCREMENT:
30188 					case CACHE:
30189 					case MINVALUE:
30190 					case MAXVALUE:
30191 					case RESTART:
30192 					case LOB_COMPACTION:
30193 					case COMPRESS_ALL_ROW_GROUPS:
30194 					case REORGANIZE:
30195 					case RESUME:
30196 					case PAUSE:
30197 					case ABORT:
30198 					case ACCELERATED_DATABASE_RECOVERY:
30199 					case PERSISTENT_VERSION_STORE_FILEGROUP:
30200 					case IMMEDIATE:
30201 					case NO_WAIT:
30202 					case TARGET_RECOVERY_TIME:
30203 					case SECONDS:
30204 					case HONOR_BROKER_PRIORITY:
30205 					case ERROR_BROKER_CONVERSATIONS:
30206 					case NEW_BROKER:
30207 					case DISABLE_BROKER:
30208 					case ENABLE_BROKER:
30209 					case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
30210 					case READ_COMMITTED_SNAPSHOT:
30211 					case ALLOW_SNAPSHOT_ISOLATION:
30212 					case RECURSIVE_TRIGGERS:
30213 					case QUOTED_IDENTIFIER:
30214 					case NUMERIC_ROUNDABORT:
30215 					case CONCAT_NULL_YIELDS_NULL:
30216 					case COMPATIBILITY_LEVEL:
30217 					case ARITHABORT:
30218 					case ANSI_WARNINGS:
30219 					case ANSI_PADDING:
30220 					case ANSI_NULLS:
30221 					case ANSI_NULL_DEFAULT:
30222 					case PAGE_VERIFY:
30223 					case CHECKSUM:
30224 					case TORN_PAGE_DETECTION:
30225 					case BULK_LOGGED:
30226 					case RECOVERY:
30227 					case TOTAL_EXECUTION_CPU_TIME_MS:
30228 					case TOTAL_COMPILE_CPU_TIME_MS:
30229 					case STALE_CAPTURE_POLICY_THRESHOLD:
30230 					case EXECUTION_COUNT:
30231 					case QUERY_CAPTURE_POLICY:
30232 					case WAIT_STATS_CAPTURE_MODE:
30233 					case MAX_PLANS_PER_QUERY:
30234 					case QUERY_CAPTURE_MODE:
30235 					case SIZE_BASED_CLEANUP_MODE:
30236 					case INTERVAL_LENGTH_MINUTES:
30237 					case MAX_STORAGE_SIZE_MB:
30238 					case DATA_FLUSH_INTERVAL_SECONDS:
30239 					case CLEANUP_POLICY:
30240 					case CUSTOM:
30241 					case STALE_QUERY_THRESHOLD_DAYS:
30242 					case OPERATION_MODE:
30243 					case QUERY_STORE:
30244 					case CURSOR_DEFAULT:
30245 					case GLOBAL:
30246 					case CURSOR_CLOSE_ON_COMMIT:
30247 					case HOURS:
30248 					case CHANGE_RETENTION:
30249 					case AUTO_CLEANUP:
30250 					case CHANGE_TRACKING:
30251 					case AUTOMATIC_TUNING:
30252 					case FORCE_LAST_GOOD_PLAN:
30253 					case AUTO_UPDATE_STATISTICS_ASYNC:
30254 					case AUTO_UPDATE_STATISTICS:
30255 					case AUTO_SHRINK:
30256 					case AUTO_CREATE_STATISTICS:
30257 					case INCREMENTAL:
30258 					case AUTO_CLOSE:
30259 					case DATA_RETENTION:
30260 					case TEMPORAL_HISTORY_RETENTION:
30261 					case EDITION:
30262 					case MIXED_PAGE_ALLOCATION:
30263 					case DISABLED:
30264 					case ALLOWED:
30265 					case HADR:
30266 					case MULTI_USER:
30267 					case RESTRICTED_USER:
30268 					case SINGLE_USER:
30269 					case OFFLINE:
30270 					case EMERGENCY:
30271 					case SUSPEND:
30272 					case DATE_CORRELATION_OPTIMIZATION:
30273 					case ELASTIC_POOL:
30274 					case SERVICE_OBJECTIVE:
30275 					case DATABASE_NAME:
30276 					case ALLOW_CONNECTIONS:
30277 					case GEO:
30278 					case NAMED:
30279 					case DATEFIRST:
30280 					case BACKUP_STORAGE_REDUNDANCY:
30281 					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
30282 					case SECONDARY:
30283 					case FAILOVER:
30284 					case DEFAULT_FULLTEXT_LANGUAGE:
30285 					case DEFAULT_LANGUAGE:
30286 					case INLINE:
30287 					case NESTED_TRIGGERS:
30288 					case TRANSFORM_NOISE_WORDS:
30289 					case TWO_DIGIT_YEAR_CUTOFF:
30290 					case PERSISTENT_LOG_BUFFER:
30291 					case DIRECTORY_NAME:
30292 					case DATEFORMAT:
30293 					case DELAYED_DURABILITY:
30294 					case AUTHORIZATION:
30295 					case TRANSFER:
30296 					case PROVIDER:
30297 					case SEARCH:
30298 					case MEMBER:
30299 					case OPENJSON:
30300 					case OPENROWSET:
30301 					case IDENTIFIER_:
30302 					case DELIMITED_IDENTIFIER_:
30303 					case STRING_:
30304 					case NUMBER_:
30305 					case HEX_DIGIT_:
30306 					case BIT_NUM_:
30307 					case NCHAR_TEXT:
30308 						{
30309 						setState(4217);
30310 						expr(0);
30311 						}
30312 						break;
30313 					default:
30314 						throw new NoViableAltException(this);
30315 					}
30316 					}
30317 				}
30318 
30319 				setState(4234);
30320 				_errHandler.sync(this);
30321 				_la = _input.LA(1);
30322 				if (_la==WITH) {
30323 					{
30324 					setState(4222);
30325 					match(WITH);
30326 					setState(4223);
30327 					match(LP_);
30328 					setState(4224);
30329 					relationalIndexOption();
30330 					setState(4229);
30331 					_errHandler.sync(this);
30332 					_la = _input.LA(1);
30333 					while (_la==COMMA_) {
30334 						{
30335 						{
30336 						setState(4225);
30337 						match(COMMA_);
30338 						setState(4226);
30339 						relationalIndexOption();
30340 						}
30341 						}
30342 						setState(4231);
30343 						_errHandler.sync(this);
30344 						_la = _input.LA(1);
30345 					}
30346 					setState(4232);
30347 					match(RP_);
30348 					}
30349 				}
30350 
30351 				}
30352 				break;
30353 			case DISABLE:
30354 				enterOuterAlt(_localctx, 2);
30355 				{
30356 				setState(4236);
30357 				match(DISABLE);
30358 				}
30359 				break;
30360 			case REORGANIZE:
30361 				enterOuterAlt(_localctx, 3);
30362 				{
30363 				setState(4237);
30364 				match(REORGANIZE);
30365 				setState(4241);
30366 				_errHandler.sync(this);
30367 				_la = _input.LA(1);
30368 				if (_la==PARTITION) {
30369 					{
30370 					setState(4238);
30371 					match(PARTITION);
30372 					setState(4239);
30373 					match(EQ_);
30374 					setState(4240);
30375 					expr(0);
30376 					}
30377 				}
30378 
30379 				setState(4248);
30380 				_errHandler.sync(this);
30381 				_la = _input.LA(1);
30382 				if (_la==WITH) {
30383 					{
30384 					setState(4243);
30385 					match(WITH);
30386 					setState(4244);
30387 					match(LP_);
30388 					setState(4245);
30389 					reorganizeOption();
30390 					setState(4246);
30391 					match(RP_);
30392 					}
30393 				}
30394 
30395 				}
30396 				break;
30397 			case SET:
30398 				enterOuterAlt(_localctx, 4);
30399 				{
30400 				setState(4250);
30401 				match(SET);
30402 				setState(4251);
30403 				match(LP_);
30404 				setState(4252);
30405 				setIndexOption();
30406 				{
30407 				setState(4253);
30408 				match(COMMA_);
30409 				setState(4254);
30410 				setIndexOption();
30411 				}
30412 				setState(4256);
30413 				match(RP_);
30414 				}
30415 				break;
30416 			case RESUME:
30417 				enterOuterAlt(_localctx, 5);
30418 				{
30419 				setState(4258);
30420 				match(RESUME);
30421 				setState(4271);
30422 				_errHandler.sync(this);
30423 				_la = _input.LA(1);
30424 				if (_la==WITH) {
30425 					{
30426 					setState(4259);
30427 					match(WITH);
30428 					setState(4260);
30429 					match(LP_);
30430 					setState(4261);
30431 					resumableIndexOptions();
30432 					setState(4266);
30433 					_errHandler.sync(this);
30434 					_la = _input.LA(1);
30435 					while (_la==COMMA_) {
30436 						{
30437 						{
30438 						setState(4262);
30439 						match(COMMA_);
30440 						setState(4263);
30441 						resumableIndexOptions();
30442 						}
30443 						}
30444 						setState(4268);
30445 						_errHandler.sync(this);
30446 						_la = _input.LA(1);
30447 					}
30448 					setState(4269);
30449 					match(RP_);
30450 					}
30451 				}
30452 
30453 				}
30454 				break;
30455 			case PAUSE:
30456 				enterOuterAlt(_localctx, 6);
30457 				{
30458 				setState(4273);
30459 				match(PAUSE);
30460 				}
30461 				break;
30462 			case ABORT:
30463 				enterOuterAlt(_localctx, 7);
30464 				{
30465 				setState(4274);
30466 				match(ABORT);
30467 				}
30468 				break;
30469 			default:
30470 				throw new NoViableAltException(this);
30471 			}
30472 		}
30473 		catch (RecognitionException re) {
30474 			_localctx.exception = re;
30475 			_errHandler.reportError(this, re);
30476 			_errHandler.recover(this, re);
30477 		}
30478 		finally {
30479 			exitRule();
30480 		}
30481 		return _localctx;
30482 	}
30483 
30484 	public static class RelationalIndexOptionContext extends ParserRuleContext {
30485 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
30486 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30487 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
30488 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
30489 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
30490 		public ExprContext expr() {
30491 			return getRuleContext(ExprContext.class,0);
30492 		}
30493 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
30494 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
30495 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
30496 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
30497 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
30498 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
30499 		public LowPriorityLockWaitContext lowPriorityLockWait() {
30500 			return getRuleContext(LowPriorityLockWaitContext.class,0);
30501 		}
30502 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
30503 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
30504 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
30505 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
30506 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
30507 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
30508 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
30509 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
30510 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
30511 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
30512 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
30513 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
30514 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
30515 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
30516 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
30517 		public List<PartitionNumberRangeContext> partitionNumberRange() {
30518 			return getRuleContexts(PartitionNumberRangeContext.class);
30519 		}
30520 		public PartitionNumberRangeContext partitionNumberRange(int i) {
30521 			return getRuleContext(PartitionNumberRangeContext.class,i);
30522 		}
30523 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
30524 		public TerminalNode COMMA_(int i) {
30525 			return getToken(SQLServerStatementParser.COMMA_, i);
30526 		}
30527 		public RelationalIndexOptionContext(ParserRuleContext parent, int invokingState) {
30528 			super(parent, invokingState);
30529 		}
30530 		@Override public int getRuleIndex() { return RULE_relationalIndexOption; }
30531 		@Override
30532 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30533 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRelationalIndexOption(this);
30534 			else return visitor.visitChildren(this);
30535 		}
30536 	}
30537 
30538 	public final RelationalIndexOptionContext relationalIndexOption() throws RecognitionException {
30539 		RelationalIndexOptionContext _localctx = new RelationalIndexOptionContext(_ctx, getState());
30540 		enterRule(_localctx, 602, RULE_relationalIndexOption);
30541 		int _la;
30542 		try {
30543 			int _alt;
30544 			setState(4344);
30545 			_errHandler.sync(this);
30546 			switch (_input.LA(1)) {
30547 			case PAD_INDEX:
30548 				enterOuterAlt(_localctx, 1);
30549 				{
30550 				setState(4277);
30551 				match(PAD_INDEX);
30552 				setState(4278);
30553 				match(EQ_);
30554 				setState(4279);
30555 				_la = _input.LA(1);
30556 				if ( !(_la==ON || _la==OFF) ) {
30557 				_errHandler.recoverInline(this);
30558 				}
30559 				else {
30560 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30561 					_errHandler.reportMatch(this);
30562 					consume();
30563 				}
30564 				}
30565 				break;
30566 			case FILLFACTOR:
30567 				enterOuterAlt(_localctx, 2);
30568 				{
30569 				setState(4280);
30570 				match(FILLFACTOR);
30571 				setState(4281);
30572 				match(EQ_);
30573 				setState(4282);
30574 				expr(0);
30575 				}
30576 				break;
30577 			case SORT_IN_TEMPDB:
30578 				enterOuterAlt(_localctx, 3);
30579 				{
30580 				setState(4283);
30581 				match(SORT_IN_TEMPDB);
30582 				setState(4284);
30583 				match(EQ_);
30584 				setState(4285);
30585 				_la = _input.LA(1);
30586 				if ( !(_la==ON || _la==OFF) ) {
30587 				_errHandler.recoverInline(this);
30588 				}
30589 				else {
30590 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30591 					_errHandler.reportMatch(this);
30592 					consume();
30593 				}
30594 				}
30595 				break;
30596 			case IGNORE_DUP_KEY:
30597 				enterOuterAlt(_localctx, 4);
30598 				{
30599 				setState(4286);
30600 				match(IGNORE_DUP_KEY);
30601 				setState(4287);
30602 				match(EQ_);
30603 				setState(4288);
30604 				_la = _input.LA(1);
30605 				if ( !(_la==ON || _la==OFF) ) {
30606 				_errHandler.recoverInline(this);
30607 				}
30608 				else {
30609 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30610 					_errHandler.reportMatch(this);
30611 					consume();
30612 				}
30613 				}
30614 				break;
30615 			case STATISTICS_NORECOMPUTE:
30616 				enterOuterAlt(_localctx, 5);
30617 				{
30618 				setState(4289);
30619 				match(STATISTICS_NORECOMPUTE);
30620 				setState(4290);
30621 				match(EQ_);
30622 				setState(4291);
30623 				_la = _input.LA(1);
30624 				if ( !(_la==ON || _la==OFF) ) {
30625 				_errHandler.recoverInline(this);
30626 				}
30627 				else {
30628 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30629 					_errHandler.reportMatch(this);
30630 					consume();
30631 				}
30632 				}
30633 				break;
30634 			case STATISTICS_INCREMENTAL:
30635 				enterOuterAlt(_localctx, 6);
30636 				{
30637 				setState(4292);
30638 				match(STATISTICS_INCREMENTAL);
30639 				setState(4293);
30640 				match(EQ_);
30641 				setState(4294);
30642 				_la = _input.LA(1);
30643 				if ( !(_la==ON || _la==OFF) ) {
30644 				_errHandler.recoverInline(this);
30645 				}
30646 				else {
30647 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30648 					_errHandler.reportMatch(this);
30649 					consume();
30650 				}
30651 				}
30652 				break;
30653 			case DROP_EXISTING:
30654 				enterOuterAlt(_localctx, 7);
30655 				{
30656 				setState(4295);
30657 				match(DROP_EXISTING);
30658 				setState(4296);
30659 				match(EQ_);
30660 				setState(4297);
30661 				_la = _input.LA(1);
30662 				if ( !(_la==ON || _la==OFF) ) {
30663 				_errHandler.recoverInline(this);
30664 				}
30665 				else {
30666 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30667 					_errHandler.reportMatch(this);
30668 					consume();
30669 				}
30670 				}
30671 				break;
30672 			case ONLINE:
30673 				enterOuterAlt(_localctx, 8);
30674 				{
30675 				setState(4298);
30676 				match(ONLINE);
30677 				setState(4299);
30678 				match(EQ_);
30679 				setState(4305);
30680 				_errHandler.sync(this);
30681 				switch (_input.LA(1)) {
30682 				case ON:
30683 					{
30684 					setState(4300);
30685 					match(ON);
30686 					setState(4302);
30687 					_errHandler.sync(this);
30688 					_la = _input.LA(1);
30689 					if (_la==WAIT_AT_LOW_PRIORITY) {
30690 						{
30691 						setState(4301);
30692 						lowPriorityLockWait();
30693 						}
30694 					}
30695 
30696 					}
30697 					break;
30698 				case OFF:
30699 					{
30700 					setState(4304);
30701 					match(OFF);
30702 					}
30703 					break;
30704 				default:
30705 					throw new NoViableAltException(this);
30706 				}
30707 				}
30708 				break;
30709 			case RESUMABLE:
30710 				enterOuterAlt(_localctx, 9);
30711 				{
30712 				setState(4307);
30713 				match(RESUMABLE);
30714 				setState(4308);
30715 				match(EQ_);
30716 				setState(4309);
30717 				_la = _input.LA(1);
30718 				if ( !(_la==ON || _la==OFF) ) {
30719 				_errHandler.recoverInline(this);
30720 				}
30721 				else {
30722 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30723 					_errHandler.reportMatch(this);
30724 					consume();
30725 				}
30726 				}
30727 				break;
30728 			case MAX_DURATION:
30729 				enterOuterAlt(_localctx, 10);
30730 				{
30731 				setState(4310);
30732 				match(MAX_DURATION);
30733 				setState(4311);
30734 				match(EQ_);
30735 				setState(4312);
30736 				expr(0);
30737 				setState(4314);
30738 				_errHandler.sync(this);
30739 				_la = _input.LA(1);
30740 				if (_la==MINUTES) {
30741 					{
30742 					setState(4313);
30743 					match(MINUTES);
30744 					}
30745 				}
30746 
30747 				}
30748 				break;
30749 			case ALLOW_ROW_LOCKS:
30750 				enterOuterAlt(_localctx, 11);
30751 				{
30752 				setState(4316);
30753 				match(ALLOW_ROW_LOCKS);
30754 				setState(4317);
30755 				match(EQ_);
30756 				setState(4318);
30757 				_la = _input.LA(1);
30758 				if ( !(_la==ON || _la==OFF) ) {
30759 				_errHandler.recoverInline(this);
30760 				}
30761 				else {
30762 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30763 					_errHandler.reportMatch(this);
30764 					consume();
30765 				}
30766 				}
30767 				break;
30768 			case ALLOW_PAGE_LOCKS:
30769 				enterOuterAlt(_localctx, 12);
30770 				{
30771 				setState(4319);
30772 				match(ALLOW_PAGE_LOCKS);
30773 				setState(4320);
30774 				match(EQ_);
30775 				setState(4321);
30776 				_la = _input.LA(1);
30777 				if ( !(_la==ON || _la==OFF) ) {
30778 				_errHandler.recoverInline(this);
30779 				}
30780 				else {
30781 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30782 					_errHandler.reportMatch(this);
30783 					consume();
30784 				}
30785 				}
30786 				break;
30787 			case OPTIMIZE_FOR_SEQUENTIAL_KEY:
30788 				enterOuterAlt(_localctx, 13);
30789 				{
30790 				setState(4322);
30791 				match(OPTIMIZE_FOR_SEQUENTIAL_KEY);
30792 				setState(4323);
30793 				match(EQ_);
30794 				setState(4324);
30795 				_la = _input.LA(1);
30796 				if ( !(_la==ON || _la==OFF) ) {
30797 				_errHandler.recoverInline(this);
30798 				}
30799 				else {
30800 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30801 					_errHandler.reportMatch(this);
30802 					consume();
30803 				}
30804 				}
30805 				break;
30806 			case MAXDOP:
30807 				enterOuterAlt(_localctx, 14);
30808 				{
30809 				setState(4325);
30810 				match(MAXDOP);
30811 				setState(4326);
30812 				match(EQ_);
30813 				setState(4327);
30814 				expr(0);
30815 				}
30816 				break;
30817 			case DATA_COMPRESSION:
30818 				enterOuterAlt(_localctx, 15);
30819 				{
30820 				setState(4328);
30821 				match(DATA_COMPRESSION);
30822 				setState(4329);
30823 				match(EQ_);
30824 				setState(4330);
30825 				_la = _input.LA(1);
30826 				if ( !(((((_la - 241)) & ~0x3f) == 0 && ((1L << (_la - 241)) & ((1L << (ROW - 241)) | (1L << (COLUMNSTORE - 241)) | (1L << (NONE - 241)) | (1L << (PAGE - 241)))) != 0) || _la==COLUMNSTORE_ARCHIVE) ) {
30827 				_errHandler.recoverInline(this);
30828 				}
30829 				else {
30830 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30831 					_errHandler.reportMatch(this);
30832 					consume();
30833 				}
30834 				setState(4342);
30835 				_errHandler.sync(this);
30836 				_la = _input.LA(1);
30837 				if (_la==ON) {
30838 					{
30839 					setState(4331);
30840 					match(ON);
30841 					setState(4332);
30842 					match(PARTITIONS);
30843 					setState(4333);
30844 					match(LP_);
30845 					setState(4334);
30846 					partitionNumberRange();
30847 					setState(4339);
30848 					_errHandler.sync(this);
30849 					_alt = getInterpreter().adaptivePredict(_input,466,_ctx);
30850 					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
30851 						if ( _alt==1 ) {
30852 							{
30853 							{
30854 							setState(4335);
30855 							match(COMMA_);
30856 							setState(4336);
30857 							partitionNumberRange();
30858 							}
30859 							} 
30860 						}
30861 						setState(4341);
30862 						_errHandler.sync(this);
30863 						_alt = getInterpreter().adaptivePredict(_input,466,_ctx);
30864 					}
30865 					}
30866 				}
30867 
30868 				}
30869 				break;
30870 			default:
30871 				throw new NoViableAltException(this);
30872 			}
30873 		}
30874 		catch (RecognitionException re) {
30875 			_localctx.exception = re;
30876 			_errHandler.reportError(this, re);
30877 			_errHandler.recover(this, re);
30878 		}
30879 		finally {
30880 			exitRule();
30881 		}
30882 		return _localctx;
30883 	}
30884 
30885 	public static class PartitionNumberRangeContext extends ParserRuleContext {
30886 		public List<ExprContext> expr() {
30887 			return getRuleContexts(ExprContext.class);
30888 		}
30889 		public ExprContext expr(int i) {
30890 			return getRuleContext(ExprContext.class,i);
30891 		}
30892 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
30893 		public PartitionNumberRangeContext(ParserRuleContext parent, int invokingState) {
30894 			super(parent, invokingState);
30895 		}
30896 		@Override public int getRuleIndex() { return RULE_partitionNumberRange; }
30897 		@Override
30898 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30899 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionNumberRange(this);
30900 			else return visitor.visitChildren(this);
30901 		}
30902 	}
30903 
30904 	public final PartitionNumberRangeContext partitionNumberRange() throws RecognitionException {
30905 		PartitionNumberRangeContext _localctx = new PartitionNumberRangeContext(_ctx, getState());
30906 		enterRule(_localctx, 604, RULE_partitionNumberRange);
30907 		int _la;
30908 		try {
30909 			enterOuterAlt(_localctx, 1);
30910 			{
30911 			setState(4346);
30912 			expr(0);
30913 			setState(4349);
30914 			_errHandler.sync(this);
30915 			_la = _input.LA(1);
30916 			if (_la==TO) {
30917 				{
30918 				setState(4347);
30919 				match(TO);
30920 				setState(4348);
30921 				expr(0);
30922 				}
30923 			}
30924 
30925 			}
30926 		}
30927 		catch (RecognitionException re) {
30928 			_localctx.exception = re;
30929 			_errHandler.reportError(this, re);
30930 			_errHandler.recover(this, re);
30931 		}
30932 		finally {
30933 			exitRule();
30934 		}
30935 		return _localctx;
30936 	}
30937 
30938 	public static class ReorganizeOptionContext extends ParserRuleContext {
30939 		public TerminalNode LOB_COMPACTION() { return getToken(SQLServerStatementParser.LOB_COMPACTION, 0); }
30940 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30941 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
30942 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
30943 		public TerminalNode COMPRESS_ALL_ROW_GROUPS() { return getToken(SQLServerStatementParser.COMPRESS_ALL_ROW_GROUPS, 0); }
30944 		public ReorganizeOptionContext(ParserRuleContext parent, int invokingState) {
30945 			super(parent, invokingState);
30946 		}
30947 		@Override public int getRuleIndex() { return RULE_reorganizeOption; }
30948 		@Override
30949 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30950 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitReorganizeOption(this);
30951 			else return visitor.visitChildren(this);
30952 		}
30953 	}
30954 
30955 	public final ReorganizeOptionContext reorganizeOption() throws RecognitionException {
30956 		ReorganizeOptionContext _localctx = new ReorganizeOptionContext(_ctx, getState());
30957 		enterRule(_localctx, 606, RULE_reorganizeOption);
30958 		int _la;
30959 		try {
30960 			setState(4357);
30961 			_errHandler.sync(this);
30962 			switch (_input.LA(1)) {
30963 			case LOB_COMPACTION:
30964 				enterOuterAlt(_localctx, 1);
30965 				{
30966 				setState(4351);
30967 				match(LOB_COMPACTION);
30968 				setState(4352);
30969 				match(EQ_);
30970 				setState(4353);
30971 				_la = _input.LA(1);
30972 				if ( !(_la==ON || _la==OFF) ) {
30973 				_errHandler.recoverInline(this);
30974 				}
30975 				else {
30976 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30977 					_errHandler.reportMatch(this);
30978 					consume();
30979 				}
30980 				}
30981 				break;
30982 			case COMPRESS_ALL_ROW_GROUPS:
30983 				enterOuterAlt(_localctx, 2);
30984 				{
30985 				setState(4354);
30986 				match(COMPRESS_ALL_ROW_GROUPS);
30987 				setState(4355);
30988 				match(EQ_);
30989 				setState(4356);
30990 				_la = _input.LA(1);
30991 				if ( !(_la==ON || _la==OFF) ) {
30992 				_errHandler.recoverInline(this);
30993 				}
30994 				else {
30995 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30996 					_errHandler.reportMatch(this);
30997 					consume();
30998 				}
30999 				}
31000 				break;
31001 			default:
31002 				throw new NoViableAltException(this);
31003 			}
31004 		}
31005 		catch (RecognitionException re) {
31006 			_localctx.exception = re;
31007 			_errHandler.reportError(this, re);
31008 			_errHandler.recover(this, re);
31009 		}
31010 		finally {
31011 			exitRule();
31012 		}
31013 		return _localctx;
31014 	}
31015 
31016 	public static class SetIndexOptionContext extends ParserRuleContext {
31017 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
31018 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31019 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31020 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31021 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
31022 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
31023 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
31024 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
31025 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
31026 		public ExprContext expr() {
31027 			return getRuleContext(ExprContext.class,0);
31028 		}
31029 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
31030 		public SetIndexOptionContext(ParserRuleContext parent, int invokingState) {
31031 			super(parent, invokingState);
31032 		}
31033 		@Override public int getRuleIndex() { return RULE_setIndexOption; }
31034 		@Override
31035 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31036 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetIndexOption(this);
31037 			else return visitor.visitChildren(this);
31038 		}
31039 	}
31040 
31041 	public final SetIndexOptionContext setIndexOption() throws RecognitionException {
31042 		SetIndexOptionContext _localctx = new SetIndexOptionContext(_ctx, getState());
31043 		enterRule(_localctx, 608, RULE_setIndexOption);
31044 		int _la;
31045 		try {
31046 			setState(4380);
31047 			_errHandler.sync(this);
31048 			switch (_input.LA(1)) {
31049 			case ALLOW_ROW_LOCKS:
31050 				enterOuterAlt(_localctx, 1);
31051 				{
31052 				setState(4359);
31053 				match(ALLOW_ROW_LOCKS);
31054 				setState(4360);
31055 				match(EQ_);
31056 				setState(4361);
31057 				_la = _input.LA(1);
31058 				if ( !(_la==ON || _la==OFF) ) {
31059 				_errHandler.recoverInline(this);
31060 				}
31061 				else {
31062 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31063 					_errHandler.reportMatch(this);
31064 					consume();
31065 				}
31066 				}
31067 				break;
31068 			case ALLOW_PAGE_LOCKS:
31069 				enterOuterAlt(_localctx, 2);
31070 				{
31071 				setState(4362);
31072 				match(ALLOW_PAGE_LOCKS);
31073 				setState(4363);
31074 				match(EQ_);
31075 				setState(4364);
31076 				_la = _input.LA(1);
31077 				if ( !(_la==ON || _la==OFF) ) {
31078 				_errHandler.recoverInline(this);
31079 				}
31080 				else {
31081 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31082 					_errHandler.reportMatch(this);
31083 					consume();
31084 				}
31085 				}
31086 				break;
31087 			case OPTIMIZE_FOR_SEQUENTIAL_KEY:
31088 				enterOuterAlt(_localctx, 3);
31089 				{
31090 				setState(4365);
31091 				match(OPTIMIZE_FOR_SEQUENTIAL_KEY);
31092 				setState(4366);
31093 				match(EQ_);
31094 				setState(4367);
31095 				_la = _input.LA(1);
31096 				if ( !(_la==ON || _la==OFF) ) {
31097 				_errHandler.recoverInline(this);
31098 				}
31099 				else {
31100 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31101 					_errHandler.reportMatch(this);
31102 					consume();
31103 				}
31104 				}
31105 				break;
31106 			case IGNORE_DUP_KEY:
31107 				enterOuterAlt(_localctx, 4);
31108 				{
31109 				setState(4368);
31110 				match(IGNORE_DUP_KEY);
31111 				setState(4369);
31112 				match(EQ_);
31113 				setState(4370);
31114 				_la = _input.LA(1);
31115 				if ( !(_la==ON || _la==OFF) ) {
31116 				_errHandler.recoverInline(this);
31117 				}
31118 				else {
31119 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31120 					_errHandler.reportMatch(this);
31121 					consume();
31122 				}
31123 				}
31124 				break;
31125 			case STATISTICS_NORECOMPUTE:
31126 				enterOuterAlt(_localctx, 5);
31127 				{
31128 				setState(4371);
31129 				match(STATISTICS_NORECOMPUTE);
31130 				setState(4372);
31131 				match(EQ_);
31132 				setState(4373);
31133 				_la = _input.LA(1);
31134 				if ( !(_la==ON || _la==OFF) ) {
31135 				_errHandler.recoverInline(this);
31136 				}
31137 				else {
31138 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31139 					_errHandler.reportMatch(this);
31140 					consume();
31141 				}
31142 				}
31143 				break;
31144 			case COMPRESSION_DELAY:
31145 				enterOuterAlt(_localctx, 6);
31146 				{
31147 				setState(4374);
31148 				match(COMPRESSION_DELAY);
31149 				setState(4375);
31150 				match(EQ_);
31151 				{
31152 				setState(4376);
31153 				expr(0);
31154 				setState(4378);
31155 				_errHandler.sync(this);
31156 				_la = _input.LA(1);
31157 				if (_la==MINUTES) {
31158 					{
31159 					setState(4377);
31160 					match(MINUTES);
31161 					}
31162 				}
31163 
31164 				}
31165 				}
31166 				break;
31167 			default:
31168 				throw new NoViableAltException(this);
31169 			}
31170 		}
31171 		catch (RecognitionException re) {
31172 			_localctx.exception = re;
31173 			_errHandler.reportError(this, re);
31174 			_errHandler.recover(this, re);
31175 		}
31176 		finally {
31177 			exitRule();
31178 		}
31179 		return _localctx;
31180 	}
31181 
31182 	public static class ResumableIndexOptionsContext extends ParserRuleContext {
31183 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
31184 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31185 		public ExprContext expr() {
31186 			return getRuleContext(ExprContext.class,0);
31187 		}
31188 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
31189 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
31190 		public LowPriorityLockWaitContext lowPriorityLockWait() {
31191 			return getRuleContext(LowPriorityLockWaitContext.class,0);
31192 		}
31193 		public ResumableIndexOptionsContext(ParserRuleContext parent, int invokingState) {
31194 			super(parent, invokingState);
31195 		}
31196 		@Override public int getRuleIndex() { return RULE_resumableIndexOptions; }
31197 		@Override
31198 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31199 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitResumableIndexOptions(this);
31200 			else return visitor.visitChildren(this);
31201 		}
31202 	}
31203 
31204 	public final ResumableIndexOptionsContext resumableIndexOptions() throws RecognitionException {
31205 		ResumableIndexOptionsContext _localctx = new ResumableIndexOptionsContext(_ctx, getState());
31206 		enterRule(_localctx, 610, RULE_resumableIndexOptions);
31207 		int _la;
31208 		try {
31209 			setState(4392);
31210 			_errHandler.sync(this);
31211 			switch (_input.LA(1)) {
31212 			case MAXDOP:
31213 				enterOuterAlt(_localctx, 1);
31214 				{
31215 				setState(4382);
31216 				match(MAXDOP);
31217 				setState(4383);
31218 				match(EQ_);
31219 				setState(4384);
31220 				expr(0);
31221 				}
31222 				break;
31223 			case MAX_DURATION:
31224 				enterOuterAlt(_localctx, 2);
31225 				{
31226 				setState(4385);
31227 				match(MAX_DURATION);
31228 				setState(4386);
31229 				match(EQ_);
31230 				setState(4387);
31231 				expr(0);
31232 				setState(4389);
31233 				_errHandler.sync(this);
31234 				_la = _input.LA(1);
31235 				if (_la==MINUTES) {
31236 					{
31237 					setState(4388);
31238 					match(MINUTES);
31239 					}
31240 				}
31241 
31242 				}
31243 				break;
31244 			case WAIT_AT_LOW_PRIORITY:
31245 				enterOuterAlt(_localctx, 3);
31246 				{
31247 				setState(4391);
31248 				lowPriorityLockWait();
31249 				}
31250 				break;
31251 			default:
31252 				throw new NoViableAltException(this);
31253 			}
31254 		}
31255 		catch (RecognitionException re) {
31256 			_localctx.exception = re;
31257 			_errHandler.reportError(this, re);
31258 			_errHandler.recover(this, re);
31259 		}
31260 		finally {
31261 			exitRule();
31262 		}
31263 		return _localctx;
31264 	}
31265 
31266 	public static class AlterDatabaseClauseContext extends ParserRuleContext {
31267 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
31268 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
31269 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31270 		public DatabaseNameContext databaseName() {
31271 			return getRuleContext(DatabaseNameContext.class,0);
31272 		}
31273 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
31274 		public IgnoredIdentifierContext ignoredIdentifier() {
31275 			return getRuleContext(IgnoredIdentifierContext.class,0);
31276 		}
31277 		public FileAndFilegroupOptionsContext fileAndFilegroupOptions() {
31278 			return getRuleContext(FileAndFilegroupOptionsContext.class,0);
31279 		}
31280 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
31281 		public List<AlterDatabaseOptionSpecContext> alterDatabaseOptionSpec() {
31282 			return getRuleContexts(AlterDatabaseOptionSpecContext.class);
31283 		}
31284 		public AlterDatabaseOptionSpecContext alterDatabaseOptionSpec(int i) {
31285 			return getRuleContext(AlterDatabaseOptionSpecContext.class,i);
31286 		}
31287 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
31288 		public TerminalNode COMMA_(int i) {
31289 			return getToken(SQLServerStatementParser.COMMA_, i);
31290 		}
31291 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
31292 		public TerminationContext termination() {
31293 			return getRuleContext(TerminationContext.class,0);
31294 		}
31295 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31296 		public List<EditionOptionsContext> editionOptions() {
31297 			return getRuleContexts(EditionOptionsContext.class);
31298 		}
31299 		public EditionOptionsContext editionOptions(int i) {
31300 			return getRuleContext(EditionOptionsContext.class,i);
31301 		}
31302 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
31303 		public TerminalNode BACKUP_STORAGE_REDUNDANCY() { return getToken(SQLServerStatementParser.BACKUP_STORAGE_REDUNDANCY, 0); }
31304 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
31305 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
31306 		public TerminalNode SECONDARY() { return getToken(SQLServerStatementParser.SECONDARY, 0); }
31307 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31308 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
31309 		public List<AddSecondaryOptionContext> addSecondaryOption() {
31310 			return getRuleContexts(AddSecondaryOptionContext.class);
31311 		}
31312 		public AddSecondaryOptionContext addSecondaryOption(int i) {
31313 			return getRuleContext(AddSecondaryOptionContext.class,i);
31314 		}
31315 		public TerminalNode FAILOVER() { return getToken(SQLServerStatementParser.FAILOVER, 0); }
31316 		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(SQLServerStatementParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
31317 		public AlterDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
31318 			super(parent, invokingState);
31319 		}
31320 		@Override public int getRuleIndex() { return RULE_alterDatabaseClause; }
31321 		@Override
31322 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31323 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabaseClause(this);
31324 			else return visitor.visitChildren(this);
31325 		}
31326 	}
31327 
31328 	public final AlterDatabaseClauseContext alterDatabaseClause() throws RecognitionException {
31329 		AlterDatabaseClauseContext _localctx = new AlterDatabaseClauseContext(_ctx, getState());
31330 		enterRule(_localctx, 612, RULE_alterDatabaseClause);
31331 		int _la;
31332 		try {
31333 			setState(4448);
31334 			_errHandler.sync(this);
31335 			switch ( getInterpreter().adaptivePredict(_input,480,_ctx) ) {
31336 			case 1:
31337 				enterOuterAlt(_localctx, 1);
31338 				{
31339 				setState(4394);
31340 				match(MODIFY);
31341 				setState(4395);
31342 				match(NAME);
31343 				setState(4396);
31344 				match(EQ_);
31345 				setState(4397);
31346 				databaseName();
31347 				}
31348 				break;
31349 			case 2:
31350 				enterOuterAlt(_localctx, 2);
31351 				{
31352 				setState(4398);
31353 				match(COLLATE);
31354 				setState(4399);
31355 				ignoredIdentifier();
31356 				}
31357 				break;
31358 			case 3:
31359 				enterOuterAlt(_localctx, 3);
31360 				{
31361 				setState(4400);
31362 				fileAndFilegroupOptions();
31363 				}
31364 				break;
31365 			case 4:
31366 				enterOuterAlt(_localctx, 4);
31367 				{
31368 				setState(4401);
31369 				match(SET);
31370 				setState(4402);
31371 				alterDatabaseOptionSpec();
31372 				setState(4407);
31373 				_errHandler.sync(this);
31374 				_la = _input.LA(1);
31375 				while (_la==COMMA_) {
31376 					{
31377 					{
31378 					setState(4403);
31379 					match(COMMA_);
31380 					setState(4404);
31381 					alterDatabaseOptionSpec();
31382 					}
31383 					}
31384 					setState(4409);
31385 					_errHandler.sync(this);
31386 					_la = _input.LA(1);
31387 				}
31388 				setState(4412);
31389 				_errHandler.sync(this);
31390 				_la = _input.LA(1);
31391 				if (_la==WITH) {
31392 					{
31393 					setState(4410);
31394 					match(WITH);
31395 					setState(4411);
31396 					termination();
31397 					}
31398 				}
31399 
31400 				}
31401 				break;
31402 			case 5:
31403 				enterOuterAlt(_localctx, 5);
31404 				{
31405 				setState(4414);
31406 				match(MODIFY);
31407 				setState(4415);
31408 				match(LP_);
31409 				setState(4416);
31410 				editionOptions();
31411 				setState(4421);
31412 				_errHandler.sync(this);
31413 				_la = _input.LA(1);
31414 				while (_la==COMMA_) {
31415 					{
31416 					{
31417 					setState(4417);
31418 					match(COMMA_);
31419 					setState(4418);
31420 					editionOptions();
31421 					}
31422 					}
31423 					setState(4423);
31424 					_errHandler.sync(this);
31425 					_la = _input.LA(1);
31426 				}
31427 				setState(4424);
31428 				match(RP_);
31429 				}
31430 				break;
31431 			case 6:
31432 				enterOuterAlt(_localctx, 6);
31433 				{
31434 				setState(4426);
31435 				match(MODIFY);
31436 				setState(4427);
31437 				match(BACKUP_STORAGE_REDUNDANCY);
31438 				setState(4428);
31439 				match(EQ_);
31440 				setState(4429);
31441 				match(STRING_);
31442 				}
31443 				break;
31444 			case 7:
31445 				enterOuterAlt(_localctx, 7);
31446 				{
31447 				setState(4430);
31448 				match(ADD);
31449 				setState(4431);
31450 				match(SECONDARY);
31451 				setState(4432);
31452 				match(ON);
31453 				setState(4433);
31454 				match(SERVER);
31455 				setState(4434);
31456 				ignoredIdentifier();
31457 				setState(4444);
31458 				_errHandler.sync(this);
31459 				_la = _input.LA(1);
31460 				if (_la==WITH) {
31461 					{
31462 					setState(4435);
31463 					match(WITH);
31464 					setState(4436);
31465 					addSecondaryOption();
31466 					setState(4441);
31467 					_errHandler.sync(this);
31468 					_la = _input.LA(1);
31469 					while (_la==COMMA_) {
31470 						{
31471 						{
31472 						setState(4437);
31473 						match(COMMA_);
31474 						setState(4438);
31475 						addSecondaryOption();
31476 						}
31477 						}
31478 						setState(4443);
31479 						_errHandler.sync(this);
31480 						_la = _input.LA(1);
31481 					}
31482 					}
31483 				}
31484 
31485 				}
31486 				break;
31487 			case 8:
31488 				enterOuterAlt(_localctx, 8);
31489 				{
31490 				setState(4446);
31491 				match(FAILOVER);
31492 				}
31493 				break;
31494 			case 9:
31495 				enterOuterAlt(_localctx, 9);
31496 				{
31497 				setState(4447);
31498 				match(FORCE_FAILOVER_ALLOW_DATA_LOSS);
31499 				}
31500 				break;
31501 			}
31502 		}
31503 		catch (RecognitionException re) {
31504 			_localctx.exception = re;
31505 			_errHandler.reportError(this, re);
31506 			_errHandler.recover(this, re);
31507 		}
31508 		finally {
31509 			exitRule();
31510 		}
31511 		return _localctx;
31512 	}
31513 
31514 	public static class AddSecondaryOptionContext extends ParserRuleContext {
31515 		public Token SECONDARY_TYPE;
31516 		public TerminalNode ALLOW_CONNECTIONS() { return getToken(SQLServerStatementParser.ALLOW_CONNECTIONS, 0); }
31517 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
31518 		public TerminalNode EQ_(int i) {
31519 			return getToken(SQLServerStatementParser.EQ_, i);
31520 		}
31521 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
31522 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
31523 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
31524 		public ServiceObjectiveContext serviceObjective() {
31525 			return getRuleContext(ServiceObjectiveContext.class,0);
31526 		}
31527 		public TerminalNode DATABASE_NAME() { return getToken(SQLServerStatementParser.DATABASE_NAME, 0); }
31528 		public DatabaseNameContext databaseName() {
31529 			return getRuleContext(DatabaseNameContext.class,0);
31530 		}
31531 		public TerminalNode GEO() { return getToken(SQLServerStatementParser.GEO, 0); }
31532 		public TerminalNode NAMED() { return getToken(SQLServerStatementParser.NAMED, 0); }
31533 		public AddSecondaryOptionContext(ParserRuleContext parent, int invokingState) {
31534 			super(parent, invokingState);
31535 		}
31536 		@Override public int getRuleIndex() { return RULE_addSecondaryOption; }
31537 		@Override
31538 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31539 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddSecondaryOption(this);
31540 			else return visitor.visitChildren(this);
31541 		}
31542 	}
31543 
31544 	public final AddSecondaryOptionContext addSecondaryOption() throws RecognitionException {
31545 		AddSecondaryOptionContext _localctx = new AddSecondaryOptionContext(_ctx, getState());
31546 		enterRule(_localctx, 614, RULE_addSecondaryOption);
31547 		int _la;
31548 		try {
31549 			setState(4462);
31550 			_errHandler.sync(this);
31551 			switch (_input.LA(1)) {
31552 			case ALLOW_CONNECTIONS:
31553 				enterOuterAlt(_localctx, 1);
31554 				{
31555 				setState(4450);
31556 				match(ALLOW_CONNECTIONS);
31557 				setState(4451);
31558 				match(EQ_);
31559 				setState(4452);
31560 				_la = _input.LA(1);
31561 				if ( !(_la==ALL || _la==NO) ) {
31562 				_errHandler.recoverInline(this);
31563 				}
31564 				else {
31565 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31566 					_errHandler.reportMatch(this);
31567 					consume();
31568 				}
31569 				}
31570 				break;
31571 			case SERVICE_OBJECTIVE:
31572 				enterOuterAlt(_localctx, 2);
31573 				{
31574 				setState(4453);
31575 				match(SERVICE_OBJECTIVE);
31576 				setState(4454);
31577 				match(EQ_);
31578 				setState(4460);
31579 				_errHandler.sync(this);
31580 				switch (_input.LA(1)) {
31581 				case ELASTIC_POOL:
31582 				case STRING_:
31583 					{
31584 					setState(4455);
31585 					serviceObjective();
31586 					}
31587 					break;
31588 				case DATABASE_NAME:
31589 					{
31590 					setState(4456);
31591 					match(DATABASE_NAME);
31592 					setState(4457);
31593 					match(EQ_);
31594 					setState(4458);
31595 					databaseName();
31596 					}
31597 					break;
31598 				case GEO:
31599 				case NAMED:
31600 					{
31601 					setState(4459);
31602 					((AddSecondaryOptionContext)_localctx).SECONDARY_TYPE = _input.LT(1);
31603 					_la = _input.LA(1);
31604 					if ( !(_la==GEO || _la==NAMED) ) {
31605 						((AddSecondaryOptionContext)_localctx).SECONDARY_TYPE = (Token)_errHandler.recoverInline(this);
31606 					}
31607 					else {
31608 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31609 						_errHandler.reportMatch(this);
31610 						consume();
31611 					}
31612 					}
31613 					break;
31614 				default:
31615 					throw new NoViableAltException(this);
31616 				}
31617 				}
31618 				break;
31619 			default:
31620 				throw new NoViableAltException(this);
31621 			}
31622 		}
31623 		catch (RecognitionException re) {
31624 			_localctx.exception = re;
31625 			_errHandler.reportError(this, re);
31626 			_errHandler.recover(this, re);
31627 		}
31628 		finally {
31629 			exitRule();
31630 		}
31631 		return _localctx;
31632 	}
31633 
31634 	public static class EditionOptionsContext extends ParserRuleContext {
31635 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
31636 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31637 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
31638 		public TerminalNode MB() { return getToken(SQLServerStatementParser.MB, 0); }
31639 		public TerminalNode GB() { return getToken(SQLServerStatementParser.GB, 0); }
31640 		public TerminalNode EDITION() { return getToken(SQLServerStatementParser.EDITION, 0); }
31641 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
31642 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
31643 		public ServiceObjectiveContext serviceObjective() {
31644 			return getRuleContext(ServiceObjectiveContext.class,0);
31645 		}
31646 		public EditionOptionsContext(ParserRuleContext parent, int invokingState) {
31647 			super(parent, invokingState);
31648 		}
31649 		@Override public int getRuleIndex() { return RULE_editionOptions; }
31650 		@Override
31651 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31652 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEditionOptions(this);
31653 			else return visitor.visitChildren(this);
31654 		}
31655 	}
31656 
31657 	public final EditionOptionsContext editionOptions() throws RecognitionException {
31658 		EditionOptionsContext _localctx = new EditionOptionsContext(_ctx, getState());
31659 		enterRule(_localctx, 616, RULE_editionOptions);
31660 		int _la;
31661 		try {
31662 			setState(4477);
31663 			_errHandler.sync(this);
31664 			switch (_input.LA(1)) {
31665 			case MAXSIZE:
31666 				enterOuterAlt(_localctx, 1);
31667 				{
31668 				setState(4464);
31669 				match(MAXSIZE);
31670 				setState(4465);
31671 				match(EQ_);
31672 				setState(4466);
31673 				match(NUMBER_);
31674 				setState(4467);
31675 				_la = _input.LA(1);
31676 				if ( !(_la==MB || _la==GB) ) {
31677 				_errHandler.recoverInline(this);
31678 				}
31679 				else {
31680 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31681 					_errHandler.reportMatch(this);
31682 					consume();
31683 				}
31684 				}
31685 				break;
31686 			case EDITION:
31687 				enterOuterAlt(_localctx, 2);
31688 				{
31689 				setState(4468);
31690 				match(EDITION);
31691 				setState(4469);
31692 				match(EQ_);
31693 				setState(4470);
31694 				match(STRING_);
31695 				}
31696 				break;
31697 			case SERVICE_OBJECTIVE:
31698 				enterOuterAlt(_localctx, 3);
31699 				{
31700 				setState(4471);
31701 				match(SERVICE_OBJECTIVE);
31702 				setState(4472);
31703 				match(EQ_);
31704 				setState(4475);
31705 				_errHandler.sync(this);
31706 				switch ( getInterpreter().adaptivePredict(_input,483,_ctx) ) {
31707 				case 1:
31708 					{
31709 					setState(4473);
31710 					match(STRING_);
31711 					}
31712 					break;
31713 				case 2:
31714 					{
31715 					setState(4474);
31716 					serviceObjective();
31717 					}
31718 					break;
31719 				}
31720 				}
31721 				break;
31722 			default:
31723 				throw new NoViableAltException(this);
31724 			}
31725 		}
31726 		catch (RecognitionException re) {
31727 			_localctx.exception = re;
31728 			_errHandler.reportError(this, re);
31729 			_errHandler.recover(this, re);
31730 		}
31731 		finally {
31732 			exitRule();
31733 		}
31734 		return _localctx;
31735 	}
31736 
31737 	public static class ServiceObjectiveContext extends ParserRuleContext {
31738 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
31739 		public TerminalNode ELASTIC_POOL() { return getToken(SQLServerStatementParser.ELASTIC_POOL, 0); }
31740 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31741 		public IgnoredIdentifierContext ignoredIdentifier() {
31742 			return getRuleContext(IgnoredIdentifierContext.class,0);
31743 		}
31744 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31745 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
31746 		public ServiceObjectiveContext(ParserRuleContext parent, int invokingState) {
31747 			super(parent, invokingState);
31748 		}
31749 		@Override public int getRuleIndex() { return RULE_serviceObjective; }
31750 		@Override
31751 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31752 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceObjective(this);
31753 			else return visitor.visitChildren(this);
31754 		}
31755 	}
31756 
31757 	public final ServiceObjectiveContext serviceObjective() throws RecognitionException {
31758 		ServiceObjectiveContext _localctx = new ServiceObjectiveContext(_ctx, getState());
31759 		enterRule(_localctx, 618, RULE_serviceObjective);
31760 		try {
31761 			setState(4487);
31762 			_errHandler.sync(this);
31763 			switch (_input.LA(1)) {
31764 			case STRING_:
31765 				enterOuterAlt(_localctx, 1);
31766 				{
31767 				setState(4479);
31768 				match(STRING_);
31769 				}
31770 				break;
31771 			case ELASTIC_POOL:
31772 				enterOuterAlt(_localctx, 2);
31773 				{
31774 				setState(4480);
31775 				match(ELASTIC_POOL);
31776 				setState(4481);
31777 				match(LP_);
31778 				setState(4482);
31779 				ignoredIdentifier();
31780 				setState(4483);
31781 				match(EQ_);
31782 				setState(4484);
31783 				match(STRING_);
31784 				setState(4485);
31785 				match(RP_);
31786 				}
31787 				break;
31788 			default:
31789 				throw new NoViableAltException(this);
31790 			}
31791 		}
31792 		catch (RecognitionException re) {
31793 			_localctx.exception = re;
31794 			_errHandler.reportError(this, re);
31795 			_errHandler.recover(this, re);
31796 		}
31797 		finally {
31798 			exitRule();
31799 		}
31800 		return _localctx;
31801 	}
31802 
31803 	public static class AlterDatabaseOptionSpecContext extends ParserRuleContext {
31804 		public AcceleratedDatabaseRecoveryContext acceleratedDatabaseRecovery() {
31805 			return getRuleContext(AcceleratedDatabaseRecoveryContext.class,0);
31806 		}
31807 		public AutoOptionContext autoOption() {
31808 			return getRuleContext(AutoOptionContext.class,0);
31809 		}
31810 		public AutomaticTuningOptionContext automaticTuningOption() {
31811 			return getRuleContext(AutomaticTuningOptionContext.class,0);
31812 		}
31813 		public ChangeTrackingOptionContext changeTrackingOption() {
31814 			return getRuleContext(ChangeTrackingOptionContext.class,0);
31815 		}
31816 		public TerminalNode CONTAINMENT() { return getToken(SQLServerStatementParser.CONTAINMENT, 0); }
31817 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31818 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
31819 		public TerminalNode PARTIAL() { return getToken(SQLServerStatementParser.PARTIAL, 0); }
31820 		public CursorOptionContext cursorOption() {
31821 			return getRuleContext(CursorOptionContext.class,0);
31822 		}
31823 		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(SQLServerStatementParser.DATE_CORRELATION_OPTIMIZATION, 0); }
31824 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31825 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31826 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
31827 		public TerminalNode SUSPEND() { return getToken(SQLServerStatementParser.SUSPEND, 0); }
31828 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
31829 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
31830 		public TerminalNode OFFLINE() { return getToken(SQLServerStatementParser.OFFLINE, 0); }
31831 		public TerminalNode EMERGENCY() { return getToken(SQLServerStatementParser.EMERGENCY, 0); }
31832 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
31833 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
31834 		public TerminalNode SINGLE_USER() { return getToken(SQLServerStatementParser.SINGLE_USER, 0); }
31835 		public TerminalNode RESTRICTED_USER() { return getToken(SQLServerStatementParser.RESTRICTED_USER, 0); }
31836 		public TerminalNode MULTI_USER() { return getToken(SQLServerStatementParser.MULTI_USER, 0); }
31837 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
31838 		public TerminalNode DISABLED() { return getToken(SQLServerStatementParser.DISABLED, 0); }
31839 		public TerminalNode ALLOWED() { return getToken(SQLServerStatementParser.ALLOWED, 0); }
31840 		public TerminalNode FORCED() { return getToken(SQLServerStatementParser.FORCED, 0); }
31841 		public ExternalAccessOptionContext externalAccessOption() {
31842 			return getRuleContext(ExternalAccessOptionContext.class,0);
31843 		}
31844 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
31845 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31846 		public FileStreamOptionContext fileStreamOption() {
31847 			return getRuleContext(FileStreamOptionContext.class,0);
31848 		}
31849 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
31850 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
31851 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
31852 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
31853 		public TerminalNode HADR() { return getToken(SQLServerStatementParser.HADR, 0); }
31854 		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(SQLServerStatementParser.MIXED_PAGE_ALLOCATION, 0); }
31855 		public TerminalNode PARAMETERIZATION() { return getToken(SQLServerStatementParser.PARAMETERIZATION, 0); }
31856 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
31857 		public QueryStoreOptionsContext queryStoreOptions() {
31858 			return getRuleContext(QueryStoreOptionsContext.class,0);
31859 		}
31860 		public RecoveryOptionContext recoveryOption() {
31861 			return getRuleContext(RecoveryOptionContext.class,0);
31862 		}
31863 		public ServiceBrokerOptionContext serviceBrokerOption() {
31864 			return getRuleContext(ServiceBrokerOptionContext.class,0);
31865 		}
31866 		public SnapshotOptionContext snapshotOption() {
31867 			return getRuleContext(SnapshotOptionContext.class,0);
31868 		}
31869 		public SqlOptionContext sqlOption() {
31870 			return getRuleContext(SqlOptionContext.class,0);
31871 		}
31872 		public TargetRecoveryTimeOptionContext targetRecoveryTimeOption() {
31873 			return getRuleContext(TargetRecoveryTimeOptionContext.class,0);
31874 		}
31875 		public TerminationContext termination() {
31876 			return getRuleContext(TerminationContext.class,0);
31877 		}
31878 		public TerminalNode TEMPORAL_HISTORY_RETENTION() { return getToken(SQLServerStatementParser.TEMPORAL_HISTORY_RETENTION, 0); }
31879 		public TerminalNode DATA_RETENTION() { return getToken(SQLServerStatementParser.DATA_RETENTION, 0); }
31880 		public AlterDatabaseOptionSpecContext(ParserRuleContext parent, int invokingState) {
31881 			super(parent, invokingState);
31882 		}
31883 		@Override public int getRuleIndex() { return RULE_alterDatabaseOptionSpec; }
31884 		@Override
31885 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31886 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabaseOptionSpec(this);
31887 			else return visitor.visitChildren(this);
31888 		}
31889 	}
31890 
31891 	public final AlterDatabaseOptionSpecContext alterDatabaseOptionSpec() throws RecognitionException {
31892 		AlterDatabaseOptionSpecContext _localctx = new AlterDatabaseOptionSpecContext(_ctx, getState());
31893 		enterRule(_localctx, 620, RULE_alterDatabaseOptionSpec);
31894 		int _la;
31895 		try {
31896 			setState(4532);
31897 			_errHandler.sync(this);
31898 			switch (_input.LA(1)) {
31899 			case ACCELERATED_DATABASE_RECOVERY:
31900 				enterOuterAlt(_localctx, 1);
31901 				{
31902 				setState(4489);
31903 				acceleratedDatabaseRecovery();
31904 				}
31905 				break;
31906 			case AUTO_UPDATE_STATISTICS_ASYNC:
31907 			case AUTO_UPDATE_STATISTICS:
31908 			case AUTO_SHRINK:
31909 			case AUTO_CREATE_STATISTICS:
31910 			case AUTO_CLOSE:
31911 				enterOuterAlt(_localctx, 2);
31912 				{
31913 				setState(4490);
31914 				autoOption();
31915 				}
31916 				break;
31917 			case AUTOMATIC_TUNING:
31918 				enterOuterAlt(_localctx, 3);
31919 				{
31920 				setState(4491);
31921 				automaticTuningOption();
31922 				}
31923 				break;
31924 			case CHANGE_TRACKING:
31925 				enterOuterAlt(_localctx, 4);
31926 				{
31927 				setState(4492);
31928 				changeTrackingOption();
31929 				}
31930 				break;
31931 			case CONTAINMENT:
31932 				enterOuterAlt(_localctx, 5);
31933 				{
31934 				setState(4493);
31935 				match(CONTAINMENT);
31936 				setState(4494);
31937 				match(EQ_);
31938 				setState(4495);
31939 				_la = _input.LA(1);
31940 				if ( !(_la==NONE || _la==PARTIAL) ) {
31941 				_errHandler.recoverInline(this);
31942 				}
31943 				else {
31944 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31945 					_errHandler.reportMatch(this);
31946 					consume();
31947 				}
31948 				}
31949 				break;
31950 			case CURSOR_DEFAULT:
31951 			case CURSOR_CLOSE_ON_COMMIT:
31952 				enterOuterAlt(_localctx, 6);
31953 				{
31954 				setState(4496);
31955 				cursorOption();
31956 				}
31957 				break;
31958 			case DATE_CORRELATION_OPTIMIZATION:
31959 				enterOuterAlt(_localctx, 7);
31960 				{
31961 				setState(4497);
31962 				match(DATE_CORRELATION_OPTIMIZATION);
31963 				setState(4498);
31964 				_la = _input.LA(1);
31965 				if ( !(_la==ON || _la==OFF) ) {
31966 				_errHandler.recoverInline(this);
31967 				}
31968 				else {
31969 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31970 					_errHandler.reportMatch(this);
31971 					consume();
31972 				}
31973 				}
31974 				break;
31975 			case ENCRYPTION:
31976 				enterOuterAlt(_localctx, 8);
31977 				{
31978 				setState(4499);
31979 				match(ENCRYPTION);
31980 				setState(4500);
31981 				_la = _input.LA(1);
31982 				if ( !(_la==ON || _la==OFF || _la==RESUME || _la==SUSPEND) ) {
31983 				_errHandler.recoverInline(this);
31984 				}
31985 				else {
31986 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31987 					_errHandler.reportMatch(this);
31988 					consume();
31989 				}
31990 				}
31991 				break;
31992 			case ONLINE:
31993 			case OFFLINE:
31994 			case EMERGENCY:
31995 				enterOuterAlt(_localctx, 9);
31996 				{
31997 				setState(4501);
31998 				_la = _input.LA(1);
31999 				if ( !(_la==ONLINE || _la==OFFLINE || _la==EMERGENCY) ) {
32000 				_errHandler.recoverInline(this);
32001 				}
32002 				else {
32003 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32004 					_errHandler.reportMatch(this);
32005 					consume();
32006 				}
32007 				}
32008 				break;
32009 			case READ_ONLY:
32010 			case READ_WRITE:
32011 				enterOuterAlt(_localctx, 10);
32012 				{
32013 				setState(4502);
32014 				_la = _input.LA(1);
32015 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
32016 				_errHandler.recoverInline(this);
32017 				}
32018 				else {
32019 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32020 					_errHandler.reportMatch(this);
32021 					consume();
32022 				}
32023 				}
32024 				break;
32025 			case MULTI_USER:
32026 			case RESTRICTED_USER:
32027 			case SINGLE_USER:
32028 				enterOuterAlt(_localctx, 11);
32029 				{
32030 				setState(4503);
32031 				_la = _input.LA(1);
32032 				if ( !(((((_la - 631)) & ~0x3f) == 0 && ((1L << (_la - 631)) & ((1L << (MULTI_USER - 631)) | (1L << (RESTRICTED_USER - 631)) | (1L << (SINGLE_USER - 631)))) != 0)) ) {
32033 				_errHandler.recoverInline(this);
32034 				}
32035 				else {
32036 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32037 					_errHandler.reportMatch(this);
32038 					consume();
32039 				}
32040 				}
32041 				break;
32042 			case DELAYED_DURABILITY:
32043 				enterOuterAlt(_localctx, 12);
32044 				{
32045 				setState(4504);
32046 				match(DELAYED_DURABILITY);
32047 				setState(4505);
32048 				match(EQ_);
32049 				setState(4506);
32050 				_la = _input.LA(1);
32051 				if ( !(_la==FORCED || _la==DISABLED || _la==ALLOWED) ) {
32052 				_errHandler.recoverInline(this);
32053 				}
32054 				else {
32055 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32056 					_errHandler.reportMatch(this);
32057 					consume();
32058 				}
32059 				}
32060 				break;
32061 			case DB_CHAINING:
32062 			case TRUSTWORTHY:
32063 			case DEFAULT_FULLTEXT_LANGUAGE:
32064 			case DEFAULT_LANGUAGE:
32065 			case NESTED_TRIGGERS:
32066 			case TRANSFORM_NOISE_WORDS:
32067 			case TWO_DIGIT_YEAR_CUTOFF:
32068 				enterOuterAlt(_localctx, 13);
32069 				{
32070 				setState(4507);
32071 				externalAccessOption();
32072 				}
32073 				break;
32074 			case FILESTREAM:
32075 				enterOuterAlt(_localctx, 14);
32076 				{
32077 				setState(4508);
32078 				match(FILESTREAM);
32079 				setState(4509);
32080 				match(LP_);
32081 				setState(4510);
32082 				fileStreamOption();
32083 				setState(4511);
32084 				match(RP_);
32085 				}
32086 				break;
32087 			case ALTER:
32088 				enterOuterAlt(_localctx, 15);
32089 				{
32090 				setState(4513);
32091 				match(ALTER);
32092 				setState(4514);
32093 				match(DATABASE);
32094 				setState(4515);
32095 				match(SET);
32096 				setState(4516);
32097 				match(HADR);
32098 				}
32099 				break;
32100 			case MIXED_PAGE_ALLOCATION:
32101 				enterOuterAlt(_localctx, 16);
32102 				{
32103 				setState(4517);
32104 				match(MIXED_PAGE_ALLOCATION);
32105 				setState(4518);
32106 				_la = _input.LA(1);
32107 				if ( !(_la==ON || _la==OFF) ) {
32108 				_errHandler.recoverInline(this);
32109 				}
32110 				else {
32111 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32112 					_errHandler.reportMatch(this);
32113 					consume();
32114 				}
32115 				}
32116 				break;
32117 			case PARAMETERIZATION:
32118 				enterOuterAlt(_localctx, 17);
32119 				{
32120 				setState(4519);
32121 				match(PARAMETERIZATION);
32122 				setState(4520);
32123 				_la = _input.LA(1);
32124 				if ( !(_la==SIMPLE || _la==FORCED) ) {
32125 				_errHandler.recoverInline(this);
32126 				}
32127 				else {
32128 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32129 					_errHandler.reportMatch(this);
32130 					consume();
32131 				}
32132 				}
32133 				break;
32134 			case QUERY_STORE:
32135 				enterOuterAlt(_localctx, 18);
32136 				{
32137 				setState(4521);
32138 				queryStoreOptions();
32139 				}
32140 				break;
32141 			case PAGE_VERIFY:
32142 			case TORN_PAGE_DETECTION:
32143 			case RECOVERY:
32144 				enterOuterAlt(_localctx, 19);
32145 				{
32146 				setState(4522);
32147 				recoveryOption();
32148 				}
32149 				break;
32150 			case HONOR_BROKER_PRIORITY:
32151 			case ERROR_BROKER_CONVERSATIONS:
32152 			case NEW_BROKER:
32153 			case DISABLE_BROKER:
32154 			case ENABLE_BROKER:
32155 				enterOuterAlt(_localctx, 20);
32156 				{
32157 				setState(4523);
32158 				serviceBrokerOption();
32159 				}
32160 				break;
32161 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
32162 			case READ_COMMITTED_SNAPSHOT:
32163 			case ALLOW_SNAPSHOT_ISOLATION:
32164 				enterOuterAlt(_localctx, 21);
32165 				{
32166 				setState(4524);
32167 				snapshotOption();
32168 				}
32169 				break;
32170 			case RECURSIVE_TRIGGERS:
32171 			case QUOTED_IDENTIFIER:
32172 			case NUMERIC_ROUNDABORT:
32173 			case CONCAT_NULL_YIELDS_NULL:
32174 			case COMPATIBILITY_LEVEL:
32175 			case ARITHABORT:
32176 			case ANSI_WARNINGS:
32177 			case ANSI_PADDING:
32178 			case ANSI_NULLS:
32179 			case ANSI_NULL_DEFAULT:
32180 				enterOuterAlt(_localctx, 22);
32181 				{
32182 				setState(4525);
32183 				sqlOption();
32184 				}
32185 				break;
32186 			case TARGET_RECOVERY_TIME:
32187 				enterOuterAlt(_localctx, 23);
32188 				{
32189 				setState(4526);
32190 				targetRecoveryTimeOption();
32191 				}
32192 				break;
32193 			case ROLLBACK:
32194 			case NO_WAIT:
32195 				enterOuterAlt(_localctx, 24);
32196 				{
32197 				setState(4527);
32198 				termination();
32199 				}
32200 				break;
32201 			case TEMPORAL_HISTORY_RETENTION:
32202 				enterOuterAlt(_localctx, 25);
32203 				{
32204 				setState(4528);
32205 				match(TEMPORAL_HISTORY_RETENTION);
32206 				setState(4529);
32207 				_la = _input.LA(1);
32208 				if ( !(_la==ON || _la==OFF) ) {
32209 				_errHandler.recoverInline(this);
32210 				}
32211 				else {
32212 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32213 					_errHandler.reportMatch(this);
32214 					consume();
32215 				}
32216 				}
32217 				break;
32218 			case DATA_RETENTION:
32219 				enterOuterAlt(_localctx, 26);
32220 				{
32221 				setState(4530);
32222 				match(DATA_RETENTION);
32223 				setState(4531);
32224 				_la = _input.LA(1);
32225 				if ( !(_la==ON || _la==OFF) ) {
32226 				_errHandler.recoverInline(this);
32227 				}
32228 				else {
32229 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32230 					_errHandler.reportMatch(this);
32231 					consume();
32232 				}
32233 				}
32234 				break;
32235 			default:
32236 				throw new NoViableAltException(this);
32237 			}
32238 		}
32239 		catch (RecognitionException re) {
32240 			_localctx.exception = re;
32241 			_errHandler.reportError(this, re);
32242 			_errHandler.recover(this, re);
32243 		}
32244 		finally {
32245 			exitRule();
32246 		}
32247 		return _localctx;
32248 	}
32249 
32250 	public static class FileAndFilegroupOptionsContext extends ParserRuleContext {
32251 		public AddOrModifyFilesContext addOrModifyFiles() {
32252 			return getRuleContext(AddOrModifyFilesContext.class,0);
32253 		}
32254 		public FileSpecContext fileSpec() {
32255 			return getRuleContext(FileSpecContext.class,0);
32256 		}
32257 		public AddOrModifyFilegroupsContext addOrModifyFilegroups() {
32258 			return getRuleContext(AddOrModifyFilegroupsContext.class,0);
32259 		}
32260 		public FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() {
32261 			return getRuleContext(FilegroupUpdatabilityOptionContext.class,0);
32262 		}
32263 		public FileAndFilegroupOptionsContext(ParserRuleContext parent, int invokingState) {
32264 			super(parent, invokingState);
32265 		}
32266 		@Override public int getRuleIndex() { return RULE_fileAndFilegroupOptions; }
32267 		@Override
32268 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32269 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileAndFilegroupOptions(this);
32270 			else return visitor.visitChildren(this);
32271 		}
32272 	}
32273 
32274 	public final FileAndFilegroupOptionsContext fileAndFilegroupOptions() throws RecognitionException {
32275 		FileAndFilegroupOptionsContext _localctx = new FileAndFilegroupOptionsContext(_ctx, getState());
32276 		enterRule(_localctx, 622, RULE_fileAndFilegroupOptions);
32277 		try {
32278 			setState(4538);
32279 			_errHandler.sync(this);
32280 			switch ( getInterpreter().adaptivePredict(_input,487,_ctx) ) {
32281 			case 1:
32282 				enterOuterAlt(_localctx, 1);
32283 				{
32284 				setState(4534);
32285 				addOrModifyFiles();
32286 				}
32287 				break;
32288 			case 2:
32289 				enterOuterAlt(_localctx, 2);
32290 				{
32291 				setState(4535);
32292 				fileSpec();
32293 				}
32294 				break;
32295 			case 3:
32296 				enterOuterAlt(_localctx, 3);
32297 				{
32298 				setState(4536);
32299 				addOrModifyFilegroups();
32300 				}
32301 				break;
32302 			case 4:
32303 				enterOuterAlt(_localctx, 4);
32304 				{
32305 				setState(4537);
32306 				filegroupUpdatabilityOption();
32307 				}
32308 				break;
32309 			}
32310 		}
32311 		catch (RecognitionException re) {
32312 			_localctx.exception = re;
32313 			_errHandler.reportError(this, re);
32314 			_errHandler.recover(this, re);
32315 		}
32316 		finally {
32317 			exitRule();
32318 		}
32319 		return _localctx;
32320 	}
32321 
32322 	public static class AddOrModifyFilegroupsContext extends ParserRuleContext {
32323 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
32324 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
32325 		public IgnoredIdentifierContext ignoredIdentifier() {
32326 			return getRuleContext(IgnoredIdentifierContext.class,0);
32327 		}
32328 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
32329 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
32330 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
32331 		public TerminalNode REMOVE() { return getToken(SQLServerStatementParser.REMOVE, 0); }
32332 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
32333 		public FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() {
32334 			return getRuleContext(FilegroupUpdatabilityOptionContext.class,0);
32335 		}
32336 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
32337 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
32338 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32339 		public TerminalNode AUTOGROW_SINGLE_FILE() { return getToken(SQLServerStatementParser.AUTOGROW_SINGLE_FILE, 0); }
32340 		public TerminalNode AUTOGROW_ALL_FILES() { return getToken(SQLServerStatementParser.AUTOGROW_ALL_FILES, 0); }
32341 		public AddOrModifyFilegroupsContext(ParserRuleContext parent, int invokingState) {
32342 			super(parent, invokingState);
32343 		}
32344 		@Override public int getRuleIndex() { return RULE_addOrModifyFilegroups; }
32345 		@Override
32346 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32347 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddOrModifyFilegroups(this);
32348 			else return visitor.visitChildren(this);
32349 		}
32350 	}
32351 
32352 	public final AddOrModifyFilegroupsContext addOrModifyFilegroups() throws RecognitionException {
32353 		AddOrModifyFilegroupsContext _localctx = new AddOrModifyFilegroupsContext(_ctx, getState());
32354 		enterRule(_localctx, 624, RULE_addOrModifyFilegroups);
32355 		int _la;
32356 		try {
32357 			setState(4562);
32358 			_errHandler.sync(this);
32359 			switch (_input.LA(1)) {
32360 			case ADD:
32361 				enterOuterAlt(_localctx, 1);
32362 				{
32363 				setState(4540);
32364 				match(ADD);
32365 				setState(4541);
32366 				match(FILEGROUP);
32367 				setState(4542);
32368 				ignoredIdentifier();
32369 				setState(4547);
32370 				_errHandler.sync(this);
32371 				switch ( getInterpreter().adaptivePredict(_input,488,_ctx) ) {
32372 				case 1:
32373 					{
32374 					setState(4543);
32375 					match(CONTAINS);
32376 					setState(4544);
32377 					match(FILESTREAM);
32378 					}
32379 					break;
32380 				case 2:
32381 					{
32382 					setState(4545);
32383 					match(CONTAINS);
32384 					setState(4546);
32385 					match(MEMORY_OPTIMIZED_DATA);
32386 					}
32387 					break;
32388 				}
32389 				}
32390 				break;
32391 			case REMOVE:
32392 				enterOuterAlt(_localctx, 2);
32393 				{
32394 				setState(4549);
32395 				match(REMOVE);
32396 				setState(4550);
32397 				match(FILEGROUP);
32398 				setState(4551);
32399 				ignoredIdentifier();
32400 				}
32401 				break;
32402 			case MODIFY:
32403 				enterOuterAlt(_localctx, 3);
32404 				{
32405 				setState(4552);
32406 				match(MODIFY);
32407 				setState(4553);
32408 				match(FILEGROUP);
32409 				setState(4554);
32410 				ignoredIdentifier();
32411 				setState(4555);
32412 				filegroupUpdatabilityOption();
32413 				}
32414 				break;
32415 			case DEFAULT:
32416 				enterOuterAlt(_localctx, 4);
32417 				{
32418 				setState(4557);
32419 				match(DEFAULT);
32420 				}
32421 				break;
32422 			case NAME:
32423 				enterOuterAlt(_localctx, 5);
32424 				{
32425 				setState(4558);
32426 				match(NAME);
32427 				setState(4559);
32428 				match(EQ_);
32429 				setState(4560);
32430 				ignoredIdentifier();
32431 				}
32432 				break;
32433 			case AUTOGROW_SINGLE_FILE:
32434 			case AUTOGROW_ALL_FILES:
32435 				enterOuterAlt(_localctx, 6);
32436 				{
32437 				setState(4561);
32438 				_la = _input.LA(1);
32439 				if ( !(_la==AUTOGROW_SINGLE_FILE || _la==AUTOGROW_ALL_FILES) ) {
32440 				_errHandler.recoverInline(this);
32441 				}
32442 				else {
32443 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32444 					_errHandler.reportMatch(this);
32445 					consume();
32446 				}
32447 				}
32448 				break;
32449 			default:
32450 				throw new NoViableAltException(this);
32451 			}
32452 		}
32453 		catch (RecognitionException re) {
32454 			_localctx.exception = re;
32455 			_errHandler.reportError(this, re);
32456 			_errHandler.recover(this, re);
32457 		}
32458 		finally {
32459 			exitRule();
32460 		}
32461 		return _localctx;
32462 	}
32463 
32464 	public static class FilegroupUpdatabilityOptionContext extends ParserRuleContext {
32465 		public TerminalNode READONLY() { return getToken(SQLServerStatementParser.READONLY, 0); }
32466 		public TerminalNode READWRITE() { return getToken(SQLServerStatementParser.READWRITE, 0); }
32467 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
32468 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
32469 		public FilegroupUpdatabilityOptionContext(ParserRuleContext parent, int invokingState) {
32470 			super(parent, invokingState);
32471 		}
32472 		@Override public int getRuleIndex() { return RULE_filegroupUpdatabilityOption; }
32473 		@Override
32474 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32475 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFilegroupUpdatabilityOption(this);
32476 			else return visitor.visitChildren(this);
32477 		}
32478 	}
32479 
32480 	public final FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() throws RecognitionException {
32481 		FilegroupUpdatabilityOptionContext _localctx = new FilegroupUpdatabilityOptionContext(_ctx, getState());
32482 		enterRule(_localctx, 626, RULE_filegroupUpdatabilityOption);
32483 		int _la;
32484 		try {
32485 			setState(4566);
32486 			_errHandler.sync(this);
32487 			switch (_input.LA(1)) {
32488 			case READONLY:
32489 			case READWRITE:
32490 				enterOuterAlt(_localctx, 1);
32491 				{
32492 				setState(4564);
32493 				_la = _input.LA(1);
32494 				if ( !(_la==READONLY || _la==READWRITE) ) {
32495 				_errHandler.recoverInline(this);
32496 				}
32497 				else {
32498 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32499 					_errHandler.reportMatch(this);
32500 					consume();
32501 				}
32502 				}
32503 				break;
32504 			case READ_ONLY:
32505 			case READ_WRITE:
32506 				enterOuterAlt(_localctx, 2);
32507 				{
32508 				setState(4565);
32509 				_la = _input.LA(1);
32510 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
32511 				_errHandler.recoverInline(this);
32512 				}
32513 				else {
32514 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32515 					_errHandler.reportMatch(this);
32516 					consume();
32517 				}
32518 				}
32519 				break;
32520 			default:
32521 				throw new NoViableAltException(this);
32522 			}
32523 		}
32524 		catch (RecognitionException re) {
32525 			_localctx.exception = re;
32526 			_errHandler.reportError(this, re);
32527 			_errHandler.recover(this, re);
32528 		}
32529 		finally {
32530 			exitRule();
32531 		}
32532 		return _localctx;
32533 	}
32534 
32535 	public static class AddOrModifyFilesContext extends ParserRuleContext {
32536 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
32537 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
32538 		public List<FileSpecContext> fileSpec() {
32539 			return getRuleContexts(FileSpecContext.class);
32540 		}
32541 		public FileSpecContext fileSpec(int i) {
32542 			return getRuleContext(FileSpecContext.class,i);
32543 		}
32544 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
32545 		public TerminalNode COMMA_(int i) {
32546 			return getToken(SQLServerStatementParser.COMMA_, i);
32547 		}
32548 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
32549 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
32550 		public IgnoredIdentifierContext ignoredIdentifier() {
32551 			return getRuleContext(IgnoredIdentifierContext.class,0);
32552 		}
32553 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
32554 		public TerminalNode REMOVE() { return getToken(SQLServerStatementParser.REMOVE, 0); }
32555 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
32556 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
32557 		public AddOrModifyFilesContext(ParserRuleContext parent, int invokingState) {
32558 			super(parent, invokingState);
32559 		}
32560 		@Override public int getRuleIndex() { return RULE_addOrModifyFiles; }
32561 		@Override
32562 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32563 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddOrModifyFiles(this);
32564 			else return visitor.visitChildren(this);
32565 		}
32566 	}
32567 
32568 	public final AddOrModifyFilesContext addOrModifyFiles() throws RecognitionException {
32569 		AddOrModifyFilesContext _localctx = new AddOrModifyFilesContext(_ctx, getState());
32570 		enterRule(_localctx, 628, RULE_addOrModifyFiles);
32571 		int _la;
32572 		try {
32573 			setState(4600);
32574 			_errHandler.sync(this);
32575 			switch ( getInterpreter().adaptivePredict(_input,494,_ctx) ) {
32576 			case 1:
32577 				enterOuterAlt(_localctx, 1);
32578 				{
32579 				setState(4568);
32580 				match(ADD);
32581 				setState(4569);
32582 				match(FILE);
32583 				setState(4570);
32584 				fileSpec();
32585 				setState(4575);
32586 				_errHandler.sync(this);
32587 				_la = _input.LA(1);
32588 				while (_la==COMMA_) {
32589 					{
32590 					{
32591 					setState(4571);
32592 					match(COMMA_);
32593 					setState(4572);
32594 					fileSpec();
32595 					}
32596 					}
32597 					setState(4577);
32598 					_errHandler.sync(this);
32599 					_la = _input.LA(1);
32600 				}
32601 				setState(4581);
32602 				_errHandler.sync(this);
32603 				_la = _input.LA(1);
32604 				if (_la==TO) {
32605 					{
32606 					setState(4578);
32607 					match(TO);
32608 					setState(4579);
32609 					match(FILEGROUP);
32610 					setState(4580);
32611 					ignoredIdentifier();
32612 					}
32613 				}
32614 
32615 				}
32616 				break;
32617 			case 2:
32618 				enterOuterAlt(_localctx, 2);
32619 				{
32620 				setState(4583);
32621 				match(ADD);
32622 				setState(4584);
32623 				match(LOG);
32624 				setState(4585);
32625 				match(FILE);
32626 				setState(4586);
32627 				fileSpec();
32628 				setState(4591);
32629 				_errHandler.sync(this);
32630 				_la = _input.LA(1);
32631 				while (_la==COMMA_) {
32632 					{
32633 					{
32634 					setState(4587);
32635 					match(COMMA_);
32636 					setState(4588);
32637 					fileSpec();
32638 					}
32639 					}
32640 					setState(4593);
32641 					_errHandler.sync(this);
32642 					_la = _input.LA(1);
32643 				}
32644 				}
32645 				break;
32646 			case 3:
32647 				enterOuterAlt(_localctx, 3);
32648 				{
32649 				setState(4594);
32650 				match(REMOVE);
32651 				setState(4595);
32652 				match(FILE);
32653 				setState(4596);
32654 				match(STRING_);
32655 				}
32656 				break;
32657 			case 4:
32658 				enterOuterAlt(_localctx, 4);
32659 				{
32660 				setState(4597);
32661 				match(MODIFY);
32662 				setState(4598);
32663 				match(FILE);
32664 				setState(4599);
32665 				fileSpec();
32666 				}
32667 				break;
32668 			}
32669 		}
32670 		catch (RecognitionException re) {
32671 			_localctx.exception = re;
32672 			_errHandler.reportError(this, re);
32673 			_errHandler.recover(this, re);
32674 		}
32675 		finally {
32676 			exitRule();
32677 		}
32678 		return _localctx;
32679 	}
32680 
32681 	public static class AcceleratedDatabaseRecoveryContext extends ParserRuleContext {
32682 		public TerminalNode ACCELERATED_DATABASE_RECOVERY() { return getToken(SQLServerStatementParser.ACCELERATED_DATABASE_RECOVERY, 0); }
32683 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
32684 		public TerminalNode EQ_(int i) {
32685 			return getToken(SQLServerStatementParser.EQ_, i);
32686 		}
32687 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32688 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32689 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32690 		public TerminalNode PERSISTENT_VERSION_STORE_FILEGROUP() { return getToken(SQLServerStatementParser.PERSISTENT_VERSION_STORE_FILEGROUP, 0); }
32691 		public IgnoredIdentifierContext ignoredIdentifier() {
32692 			return getRuleContext(IgnoredIdentifierContext.class,0);
32693 		}
32694 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32695 		public AcceleratedDatabaseRecoveryContext(ParserRuleContext parent, int invokingState) {
32696 			super(parent, invokingState);
32697 		}
32698 		@Override public int getRuleIndex() { return RULE_acceleratedDatabaseRecovery; }
32699 		@Override
32700 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32701 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAcceleratedDatabaseRecovery(this);
32702 			else return visitor.visitChildren(this);
32703 		}
32704 	}
32705 
32706 	public final AcceleratedDatabaseRecoveryContext acceleratedDatabaseRecovery() throws RecognitionException {
32707 		AcceleratedDatabaseRecoveryContext _localctx = new AcceleratedDatabaseRecoveryContext(_ctx, getState());
32708 		enterRule(_localctx, 630, RULE_acceleratedDatabaseRecovery);
32709 		int _la;
32710 		try {
32711 			enterOuterAlt(_localctx, 1);
32712 			{
32713 			setState(4602);
32714 			match(ACCELERATED_DATABASE_RECOVERY);
32715 			setState(4603);
32716 			match(EQ_);
32717 			setState(4604);
32718 			_la = _input.LA(1);
32719 			if ( !(_la==ON || _la==OFF) ) {
32720 			_errHandler.recoverInline(this);
32721 			}
32722 			else {
32723 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32724 				_errHandler.reportMatch(this);
32725 				consume();
32726 			}
32727 			setState(4611);
32728 			_errHandler.sync(this);
32729 			switch ( getInterpreter().adaptivePredict(_input,495,_ctx) ) {
32730 			case 1:
32731 				{
32732 				setState(4605);
32733 				match(LP_);
32734 				setState(4606);
32735 				match(PERSISTENT_VERSION_STORE_FILEGROUP);
32736 				setState(4607);
32737 				match(EQ_);
32738 				setState(4608);
32739 				ignoredIdentifier();
32740 				setState(4609);
32741 				match(RP_);
32742 				}
32743 				break;
32744 			}
32745 			}
32746 		}
32747 		catch (RecognitionException re) {
32748 			_localctx.exception = re;
32749 			_errHandler.reportError(this, re);
32750 			_errHandler.recover(this, re);
32751 		}
32752 		finally {
32753 			exitRule();
32754 		}
32755 		return _localctx;
32756 	}
32757 
32758 	public static class AutoOptionContext extends ParserRuleContext {
32759 		public TerminalNode AUTO_CLOSE() { return getToken(SQLServerStatementParser.AUTO_CLOSE, 0); }
32760 		public List<TerminalNode> ON() { return getTokens(SQLServerStatementParser.ON); }
32761 		public TerminalNode ON(int i) {
32762 			return getToken(SQLServerStatementParser.ON, i);
32763 		}
32764 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32765 		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_CREATE_STATISTICS, 0); }
32766 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32767 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
32768 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32769 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32770 		public TerminalNode AUTO_SHRINK() { return getToken(SQLServerStatementParser.AUTO_SHRINK, 0); }
32771 		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS, 0); }
32772 		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
32773 		public AutoOptionContext(ParserRuleContext parent, int invokingState) {
32774 			super(parent, invokingState);
32775 		}
32776 		@Override public int getRuleIndex() { return RULE_autoOption; }
32777 		@Override
32778 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32779 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAutoOption(this);
32780 			else return visitor.visitChildren(this);
32781 		}
32782 	}
32783 
32784 	public final AutoOptionContext autoOption() throws RecognitionException {
32785 		AutoOptionContext _localctx = new AutoOptionContext(_ctx, getState());
32786 		enterRule(_localctx, 632, RULE_autoOption);
32787 		int _la;
32788 		try {
32789 			setState(4633);
32790 			_errHandler.sync(this);
32791 			switch (_input.LA(1)) {
32792 			case AUTO_CLOSE:
32793 				enterOuterAlt(_localctx, 1);
32794 				{
32795 				setState(4613);
32796 				match(AUTO_CLOSE);
32797 				setState(4614);
32798 				_la = _input.LA(1);
32799 				if ( !(_la==ON || _la==OFF) ) {
32800 				_errHandler.recoverInline(this);
32801 				}
32802 				else {
32803 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32804 					_errHandler.reportMatch(this);
32805 					consume();
32806 				}
32807 				}
32808 				break;
32809 			case AUTO_CREATE_STATISTICS:
32810 				enterOuterAlt(_localctx, 2);
32811 				{
32812 				setState(4615);
32813 				match(AUTO_CREATE_STATISTICS);
32814 				setState(4625);
32815 				_errHandler.sync(this);
32816 				switch (_input.LA(1)) {
32817 				case OFF:
32818 					{
32819 					setState(4616);
32820 					match(OFF);
32821 					}
32822 					break;
32823 				case ON:
32824 					{
32825 					setState(4617);
32826 					match(ON);
32827 					setState(4623);
32828 					_errHandler.sync(this);
32829 					switch ( getInterpreter().adaptivePredict(_input,496,_ctx) ) {
32830 					case 1:
32831 						{
32832 						setState(4618);
32833 						match(LP_);
32834 						setState(4619);
32835 						match(INCREMENTAL);
32836 						setState(4620);
32837 						match(EQ_);
32838 						setState(4621);
32839 						_la = _input.LA(1);
32840 						if ( !(_la==ON || _la==OFF) ) {
32841 						_errHandler.recoverInline(this);
32842 						}
32843 						else {
32844 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32845 							_errHandler.reportMatch(this);
32846 							consume();
32847 						}
32848 						setState(4622);
32849 						match(RP_);
32850 						}
32851 						break;
32852 					}
32853 					}
32854 					break;
32855 				default:
32856 					throw new NoViableAltException(this);
32857 				}
32858 				}
32859 				break;
32860 			case AUTO_SHRINK:
32861 				enterOuterAlt(_localctx, 3);
32862 				{
32863 				setState(4627);
32864 				match(AUTO_SHRINK);
32865 				setState(4628);
32866 				_la = _input.LA(1);
32867 				if ( !(_la==ON || _la==OFF) ) {
32868 				_errHandler.recoverInline(this);
32869 				}
32870 				else {
32871 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32872 					_errHandler.reportMatch(this);
32873 					consume();
32874 				}
32875 				}
32876 				break;
32877 			case AUTO_UPDATE_STATISTICS:
32878 				enterOuterAlt(_localctx, 4);
32879 				{
32880 				setState(4629);
32881 				match(AUTO_UPDATE_STATISTICS);
32882 				setState(4630);
32883 				_la = _input.LA(1);
32884 				if ( !(_la==ON || _la==OFF) ) {
32885 				_errHandler.recoverInline(this);
32886 				}
32887 				else {
32888 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32889 					_errHandler.reportMatch(this);
32890 					consume();
32891 				}
32892 				}
32893 				break;
32894 			case AUTO_UPDATE_STATISTICS_ASYNC:
32895 				enterOuterAlt(_localctx, 5);
32896 				{
32897 				setState(4631);
32898 				match(AUTO_UPDATE_STATISTICS_ASYNC);
32899 				setState(4632);
32900 				_la = _input.LA(1);
32901 				if ( !(_la==ON || _la==OFF) ) {
32902 				_errHandler.recoverInline(this);
32903 				}
32904 				else {
32905 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32906 					_errHandler.reportMatch(this);
32907 					consume();
32908 				}
32909 				}
32910 				break;
32911 			default:
32912 				throw new NoViableAltException(this);
32913 			}
32914 		}
32915 		catch (RecognitionException re) {
32916 			_localctx.exception = re;
32917 			_errHandler.reportError(this, re);
32918 			_errHandler.recover(this, re);
32919 		}
32920 		finally {
32921 			exitRule();
32922 		}
32923 		return _localctx;
32924 	}
32925 
32926 	public static class AutomaticTuningOptionContext extends ParserRuleContext {
32927 		public TerminalNode AUTOMATIC_TUNING() { return getToken(SQLServerStatementParser.AUTOMATIC_TUNING, 0); }
32928 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32929 		public TerminalNode FORCE_LAST_GOOD_PLAN() { return getToken(SQLServerStatementParser.FORCE_LAST_GOOD_PLAN, 0); }
32930 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32931 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32932 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32933 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32934 		public AutomaticTuningOptionContext(ParserRuleContext parent, int invokingState) {
32935 			super(parent, invokingState);
32936 		}
32937 		@Override public int getRuleIndex() { return RULE_automaticTuningOption; }
32938 		@Override
32939 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32940 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAutomaticTuningOption(this);
32941 			else return visitor.visitChildren(this);
32942 		}
32943 	}
32944 
32945 	public final AutomaticTuningOptionContext automaticTuningOption() throws RecognitionException {
32946 		AutomaticTuningOptionContext _localctx = new AutomaticTuningOptionContext(_ctx, getState());
32947 		enterRule(_localctx, 634, RULE_automaticTuningOption);
32948 		int _la;
32949 		try {
32950 			enterOuterAlt(_localctx, 1);
32951 			{
32952 			setState(4635);
32953 			match(AUTOMATIC_TUNING);
32954 			setState(4636);
32955 			match(LP_);
32956 			setState(4637);
32957 			match(FORCE_LAST_GOOD_PLAN);
32958 			setState(4638);
32959 			match(EQ_);
32960 			setState(4639);
32961 			_la = _input.LA(1);
32962 			if ( !(_la==ON || _la==OFF) ) {
32963 			_errHandler.recoverInline(this);
32964 			}
32965 			else {
32966 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32967 				_errHandler.reportMatch(this);
32968 				consume();
32969 			}
32970 			setState(4640);
32971 			match(RP_);
32972 			}
32973 		}
32974 		catch (RecognitionException re) {
32975 			_localctx.exception = re;
32976 			_errHandler.reportError(this, re);
32977 			_errHandler.recover(this, re);
32978 		}
32979 		finally {
32980 			exitRule();
32981 		}
32982 		return _localctx;
32983 	}
32984 
32985 	public static class ChangeTrackingOptionContext extends ParserRuleContext {
32986 		public TerminalNode CHANGE_TRACKING() { return getToken(SQLServerStatementParser.CHANGE_TRACKING, 0); }
32987 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32988 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32989 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32990 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32991 		public List<ChangeTrackingOptionListContext> changeTrackingOptionList() {
32992 			return getRuleContexts(ChangeTrackingOptionListContext.class);
32993 		}
32994 		public ChangeTrackingOptionListContext changeTrackingOptionList(int i) {
32995 			return getRuleContext(ChangeTrackingOptionListContext.class,i);
32996 		}
32997 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32998 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
32999 		public TerminalNode COMMA_(int i) {
33000 			return getToken(SQLServerStatementParser.COMMA_, i);
33001 		}
33002 		public ChangeTrackingOptionContext(ParserRuleContext parent, int invokingState) {
33003 			super(parent, invokingState);
33004 		}
33005 		@Override public int getRuleIndex() { return RULE_changeTrackingOption; }
33006 		@Override
33007 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33008 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitChangeTrackingOption(this);
33009 			else return visitor.visitChildren(this);
33010 		}
33011 	}
33012 
33013 	public final ChangeTrackingOptionContext changeTrackingOption() throws RecognitionException {
33014 		ChangeTrackingOptionContext _localctx = new ChangeTrackingOptionContext(_ctx, getState());
33015 		enterRule(_localctx, 636, RULE_changeTrackingOption);
33016 		int _la;
33017 		try {
33018 			enterOuterAlt(_localctx, 1);
33019 			{
33020 			setState(4642);
33021 			match(CHANGE_TRACKING);
33022 			setState(4662);
33023 			_errHandler.sync(this);
33024 			switch ( getInterpreter().adaptivePredict(_input,502,_ctx) ) {
33025 			case 1:
33026 				{
33027 				setState(4643);
33028 				match(EQ_);
33029 				setState(4644);
33030 				match(OFF);
33031 				}
33032 				break;
33033 			case 2:
33034 				{
33035 				setState(4647);
33036 				_errHandler.sync(this);
33037 				_la = _input.LA(1);
33038 				if (_la==EQ_) {
33039 					{
33040 					setState(4645);
33041 					match(EQ_);
33042 					setState(4646);
33043 					match(ON);
33044 					}
33045 				}
33046 
33047 				setState(4660);
33048 				_errHandler.sync(this);
33049 				switch ( getInterpreter().adaptivePredict(_input,501,_ctx) ) {
33050 				case 1:
33051 					{
33052 					setState(4649);
33053 					match(LP_);
33054 					setState(4650);
33055 					changeTrackingOptionList();
33056 					setState(4655);
33057 					_errHandler.sync(this);
33058 					_la = _input.LA(1);
33059 					while (_la==COMMA_) {
33060 						{
33061 						{
33062 						setState(4651);
33063 						match(COMMA_);
33064 						setState(4652);
33065 						changeTrackingOptionList();
33066 						}
33067 						}
33068 						setState(4657);
33069 						_errHandler.sync(this);
33070 						_la = _input.LA(1);
33071 					}
33072 					setState(4658);
33073 					match(RP_);
33074 					}
33075 					break;
33076 				}
33077 				}
33078 				break;
33079 			}
33080 			}
33081 		}
33082 		catch (RecognitionException re) {
33083 			_localctx.exception = re;
33084 			_errHandler.reportError(this, re);
33085 			_errHandler.recover(this, re);
33086 		}
33087 		finally {
33088 			exitRule();
33089 		}
33090 		return _localctx;
33091 	}
33092 
33093 	public static class ChangeTrackingOptionListContext extends ParserRuleContext {
33094 		public TerminalNode AUTO_CLEANUP() { return getToken(SQLServerStatementParser.AUTO_CLEANUP, 0); }
33095 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33096 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33097 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33098 		public TerminalNode CHANGE_RETENTION() { return getToken(SQLServerStatementParser.CHANGE_RETENTION, 0); }
33099 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33100 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
33101 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
33102 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
33103 		public ChangeTrackingOptionListContext(ParserRuleContext parent, int invokingState) {
33104 			super(parent, invokingState);
33105 		}
33106 		@Override public int getRuleIndex() { return RULE_changeTrackingOptionList; }
33107 		@Override
33108 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33109 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitChangeTrackingOptionList(this);
33110 			else return visitor.visitChildren(this);
33111 		}
33112 	}
33113 
33114 	public final ChangeTrackingOptionListContext changeTrackingOptionList() throws RecognitionException {
33115 		ChangeTrackingOptionListContext _localctx = new ChangeTrackingOptionListContext(_ctx, getState());
33116 		enterRule(_localctx, 638, RULE_changeTrackingOptionList);
33117 		int _la;
33118 		try {
33119 			setState(4671);
33120 			_errHandler.sync(this);
33121 			switch (_input.LA(1)) {
33122 			case AUTO_CLEANUP:
33123 				enterOuterAlt(_localctx, 1);
33124 				{
33125 				setState(4664);
33126 				match(AUTO_CLEANUP);
33127 				setState(4665);
33128 				match(EQ_);
33129 				setState(4666);
33130 				_la = _input.LA(1);
33131 				if ( !(_la==ON || _la==OFF) ) {
33132 				_errHandler.recoverInline(this);
33133 				}
33134 				else {
33135 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33136 					_errHandler.reportMatch(this);
33137 					consume();
33138 				}
33139 				}
33140 				break;
33141 			case CHANGE_RETENTION:
33142 				enterOuterAlt(_localctx, 2);
33143 				{
33144 				setState(4667);
33145 				match(CHANGE_RETENTION);
33146 				setState(4668);
33147 				match(EQ_);
33148 				setState(4669);
33149 				match(NUMBER_);
33150 				setState(4670);
33151 				_la = _input.LA(1);
33152 				if ( !(_la==DAYS || _la==MINUTES || _la==HOURS) ) {
33153 				_errHandler.recoverInline(this);
33154 				}
33155 				else {
33156 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33157 					_errHandler.reportMatch(this);
33158 					consume();
33159 				}
33160 				}
33161 				break;
33162 			default:
33163 				throw new NoViableAltException(this);
33164 			}
33165 		}
33166 		catch (RecognitionException re) {
33167 			_localctx.exception = re;
33168 			_errHandler.reportError(this, re);
33169 			_errHandler.recover(this, re);
33170 		}
33171 		finally {
33172 			exitRule();
33173 		}
33174 		return _localctx;
33175 	}
33176 
33177 	public static class CursorOptionContext extends ParserRuleContext {
33178 		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(SQLServerStatementParser.CURSOR_CLOSE_ON_COMMIT, 0); }
33179 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33180 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33181 		public TerminalNode CURSOR_DEFAULT() { return getToken(SQLServerStatementParser.CURSOR_DEFAULT, 0); }
33182 		public TerminalNode LOCAL() { return getToken(SQLServerStatementParser.LOCAL, 0); }
33183 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
33184 		public CursorOptionContext(ParserRuleContext parent, int invokingState) {
33185 			super(parent, invokingState);
33186 		}
33187 		@Override public int getRuleIndex() { return RULE_cursorOption; }
33188 		@Override
33189 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33190 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorOption(this);
33191 			else return visitor.visitChildren(this);
33192 		}
33193 	}
33194 
33195 	public final CursorOptionContext cursorOption() throws RecognitionException {
33196 		CursorOptionContext _localctx = new CursorOptionContext(_ctx, getState());
33197 		enterRule(_localctx, 640, RULE_cursorOption);
33198 		int _la;
33199 		try {
33200 			setState(4677);
33201 			_errHandler.sync(this);
33202 			switch (_input.LA(1)) {
33203 			case CURSOR_CLOSE_ON_COMMIT:
33204 				enterOuterAlt(_localctx, 1);
33205 				{
33206 				setState(4673);
33207 				match(CURSOR_CLOSE_ON_COMMIT);
33208 				setState(4674);
33209 				_la = _input.LA(1);
33210 				if ( !(_la==ON || _la==OFF) ) {
33211 				_errHandler.recoverInline(this);
33212 				}
33213 				else {
33214 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33215 					_errHandler.reportMatch(this);
33216 					consume();
33217 				}
33218 				}
33219 				break;
33220 			case CURSOR_DEFAULT:
33221 				enterOuterAlt(_localctx, 2);
33222 				{
33223 				setState(4675);
33224 				match(CURSOR_DEFAULT);
33225 				setState(4676);
33226 				_la = _input.LA(1);
33227 				if ( !(_la==LOCAL || _la==GLOBAL) ) {
33228 				_errHandler.recoverInline(this);
33229 				}
33230 				else {
33231 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33232 					_errHandler.reportMatch(this);
33233 					consume();
33234 				}
33235 				}
33236 				break;
33237 			default:
33238 				throw new NoViableAltException(this);
33239 			}
33240 		}
33241 		catch (RecognitionException re) {
33242 			_localctx.exception = re;
33243 			_errHandler.reportError(this, re);
33244 			_errHandler.recover(this, re);
33245 		}
33246 		finally {
33247 			exitRule();
33248 		}
33249 		return _localctx;
33250 	}
33251 
33252 	public static class ExternalAccessOptionContext extends ParserRuleContext {
33253 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
33254 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33255 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33256 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
33257 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
33258 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33259 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
33260 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
33261 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
33262 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
33263 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
33264 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33265 		public ExternalAccessOptionContext(ParserRuleContext parent, int invokingState) {
33266 			super(parent, invokingState);
33267 		}
33268 		@Override public int getRuleIndex() { return RULE_externalAccessOption; }
33269 		@Override
33270 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33271 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExternalAccessOption(this);
33272 			else return visitor.visitChildren(this);
33273 		}
33274 	}
33275 
33276 	public final ExternalAccessOptionContext externalAccessOption() throws RecognitionException {
33277 		ExternalAccessOptionContext _localctx = new ExternalAccessOptionContext(_ctx, getState());
33278 		enterRule(_localctx, 642, RULE_externalAccessOption);
33279 		int _la;
33280 		try {
33281 			setState(4698);
33282 			_errHandler.sync(this);
33283 			switch (_input.LA(1)) {
33284 			case DB_CHAINING:
33285 				enterOuterAlt(_localctx, 1);
33286 				{
33287 				setState(4679);
33288 				match(DB_CHAINING);
33289 				setState(4680);
33290 				_la = _input.LA(1);
33291 				if ( !(_la==ON || _la==OFF) ) {
33292 				_errHandler.recoverInline(this);
33293 				}
33294 				else {
33295 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33296 					_errHandler.reportMatch(this);
33297 					consume();
33298 				}
33299 				}
33300 				break;
33301 			case TRUSTWORTHY:
33302 				enterOuterAlt(_localctx, 2);
33303 				{
33304 				setState(4681);
33305 				match(TRUSTWORTHY);
33306 				setState(4682);
33307 				_la = _input.LA(1);
33308 				if ( !(_la==ON || _la==OFF) ) {
33309 				_errHandler.recoverInline(this);
33310 				}
33311 				else {
33312 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33313 					_errHandler.reportMatch(this);
33314 					consume();
33315 				}
33316 				}
33317 				break;
33318 			case DEFAULT_FULLTEXT_LANGUAGE:
33319 				enterOuterAlt(_localctx, 3);
33320 				{
33321 				setState(4683);
33322 				match(DEFAULT_FULLTEXT_LANGUAGE);
33323 				setState(4684);
33324 				match(EQ_);
33325 				setState(4685);
33326 				match(STRING_);
33327 				}
33328 				break;
33329 			case DEFAULT_LANGUAGE:
33330 				enterOuterAlt(_localctx, 4);
33331 				{
33332 				setState(4686);
33333 				match(DEFAULT_LANGUAGE);
33334 				setState(4687);
33335 				match(EQ_);
33336 				setState(4688);
33337 				match(STRING_);
33338 				}
33339 				break;
33340 			case NESTED_TRIGGERS:
33341 				enterOuterAlt(_localctx, 5);
33342 				{
33343 				setState(4689);
33344 				match(NESTED_TRIGGERS);
33345 				setState(4690);
33346 				match(EQ_);
33347 				setState(4691);
33348 				_la = _input.LA(1);
33349 				if ( !(_la==ON || _la==OFF) ) {
33350 				_errHandler.recoverInline(this);
33351 				}
33352 				else {
33353 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33354 					_errHandler.reportMatch(this);
33355 					consume();
33356 				}
33357 				}
33358 				break;
33359 			case TRANSFORM_NOISE_WORDS:
33360 				enterOuterAlt(_localctx, 6);
33361 				{
33362 				setState(4692);
33363 				match(TRANSFORM_NOISE_WORDS);
33364 				setState(4693);
33365 				match(EQ_);
33366 				setState(4694);
33367 				_la = _input.LA(1);
33368 				if ( !(_la==ON || _la==OFF) ) {
33369 				_errHandler.recoverInline(this);
33370 				}
33371 				else {
33372 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33373 					_errHandler.reportMatch(this);
33374 					consume();
33375 				}
33376 				}
33377 				break;
33378 			case TWO_DIGIT_YEAR_CUTOFF:
33379 				enterOuterAlt(_localctx, 7);
33380 				{
33381 				setState(4695);
33382 				match(TWO_DIGIT_YEAR_CUTOFF);
33383 				setState(4696);
33384 				match(EQ_);
33385 				setState(4697);
33386 				match(NUMBER_);
33387 				}
33388 				break;
33389 			default:
33390 				throw new NoViableAltException(this);
33391 			}
33392 		}
33393 		catch (RecognitionException re) {
33394 			_localctx.exception = re;
33395 			_errHandler.reportError(this, re);
33396 			_errHandler.recover(this, re);
33397 		}
33398 		finally {
33399 			exitRule();
33400 		}
33401 		return _localctx;
33402 	}
33403 
33404 	public static class QueryStoreOptionsContext extends ParserRuleContext {
33405 		public TerminalNode QUERY_STORE() { return getToken(SQLServerStatementParser.QUERY_STORE, 0); }
33406 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33407 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33408 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33409 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33410 		public List<QueryStoreOptionListContext> queryStoreOptionList() {
33411 			return getRuleContexts(QueryStoreOptionListContext.class);
33412 		}
33413 		public QueryStoreOptionListContext queryStoreOptionList(int i) {
33414 			return getRuleContext(QueryStoreOptionListContext.class,i);
33415 		}
33416 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33417 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33418 		public TerminalNode COMMA_(int i) {
33419 			return getToken(SQLServerStatementParser.COMMA_, i);
33420 		}
33421 		public QueryStoreOptionsContext(ParserRuleContext parent, int invokingState) {
33422 			super(parent, invokingState);
33423 		}
33424 		@Override public int getRuleIndex() { return RULE_queryStoreOptions; }
33425 		@Override
33426 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33427 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryStoreOptions(this);
33428 			else return visitor.visitChildren(this);
33429 		}
33430 	}
33431 
33432 	public final QueryStoreOptionsContext queryStoreOptions() throws RecognitionException {
33433 		QueryStoreOptionsContext _localctx = new QueryStoreOptionsContext(_ctx, getState());
33434 		enterRule(_localctx, 644, RULE_queryStoreOptions);
33435 		int _la;
33436 		try {
33437 			enterOuterAlt(_localctx, 1);
33438 			{
33439 			setState(4700);
33440 			match(QUERY_STORE);
33441 			setState(4720);
33442 			_errHandler.sync(this);
33443 			switch ( getInterpreter().adaptivePredict(_input,509,_ctx) ) {
33444 			case 1:
33445 				{
33446 				setState(4701);
33447 				match(EQ_);
33448 				setState(4702);
33449 				match(OFF);
33450 				}
33451 				break;
33452 			case 2:
33453 				{
33454 				setState(4705);
33455 				_errHandler.sync(this);
33456 				_la = _input.LA(1);
33457 				if (_la==EQ_) {
33458 					{
33459 					setState(4703);
33460 					match(EQ_);
33461 					setState(4704);
33462 					match(ON);
33463 					}
33464 				}
33465 
33466 				setState(4718);
33467 				_errHandler.sync(this);
33468 				switch ( getInterpreter().adaptivePredict(_input,508,_ctx) ) {
33469 				case 1:
33470 					{
33471 					setState(4707);
33472 					match(LP_);
33473 					setState(4708);
33474 					queryStoreOptionList();
33475 					setState(4713);
33476 					_errHandler.sync(this);
33477 					_la = _input.LA(1);
33478 					while (_la==COMMA_) {
33479 						{
33480 						{
33481 						setState(4709);
33482 						match(COMMA_);
33483 						setState(4710);
33484 						queryStoreOptionList();
33485 						}
33486 						}
33487 						setState(4715);
33488 						_errHandler.sync(this);
33489 						_la = _input.LA(1);
33490 					}
33491 					setState(4716);
33492 					match(RP_);
33493 					}
33494 					break;
33495 				}
33496 				}
33497 				break;
33498 			}
33499 			}
33500 		}
33501 		catch (RecognitionException re) {
33502 			_localctx.exception = re;
33503 			_errHandler.reportError(this, re);
33504 			_errHandler.recover(this, re);
33505 		}
33506 		finally {
33507 			exitRule();
33508 		}
33509 		return _localctx;
33510 	}
33511 
33512 	public static class QueryStoreOptionListContext extends ParserRuleContext {
33513 		public TerminalNode OPERATION_MODE() { return getToken(SQLServerStatementParser.OPERATION_MODE, 0); }
33514 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
33515 		public TerminalNode EQ_(int i) {
33516 			return getToken(SQLServerStatementParser.EQ_, i);
33517 		}
33518 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
33519 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
33520 		public TerminalNode CLEANUP_POLICY() { return getToken(SQLServerStatementParser.CLEANUP_POLICY, 0); }
33521 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33522 		public TerminalNode STALE_QUERY_THRESHOLD_DAYS() { return getToken(SQLServerStatementParser.STALE_QUERY_THRESHOLD_DAYS, 0); }
33523 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33524 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33525 		public TerminalNode DATA_FLUSH_INTERVAL_SECONDS() { return getToken(SQLServerStatementParser.DATA_FLUSH_INTERVAL_SECONDS, 0); }
33526 		public TerminalNode MAX_STORAGE_SIZE_MB() { return getToken(SQLServerStatementParser.MAX_STORAGE_SIZE_MB, 0); }
33527 		public TerminalNode INTERVAL_LENGTH_MINUTES() { return getToken(SQLServerStatementParser.INTERVAL_LENGTH_MINUTES, 0); }
33528 		public TerminalNode SIZE_BASED_CLEANUP_MODE() { return getToken(SQLServerStatementParser.SIZE_BASED_CLEANUP_MODE, 0); }
33529 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
33530 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33531 		public TerminalNode QUERY_CAPTURE_MODE() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_MODE, 0); }
33532 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
33533 		public TerminalNode CUSTOM() { return getToken(SQLServerStatementParser.CUSTOM, 0); }
33534 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
33535 		public TerminalNode MAX_PLANS_PER_QUERY() { return getToken(SQLServerStatementParser.MAX_PLANS_PER_QUERY, 0); }
33536 		public TerminalNode WAIT_STATS_CAPTURE_MODE() { return getToken(SQLServerStatementParser.WAIT_STATS_CAPTURE_MODE, 0); }
33537 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33538 		public TerminalNode QUERY_CAPTURE_POLICY() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_POLICY, 0); }
33539 		public List<QueryCapturePolicyOptionListContext> queryCapturePolicyOptionList() {
33540 			return getRuleContexts(QueryCapturePolicyOptionListContext.class);
33541 		}
33542 		public QueryCapturePolicyOptionListContext queryCapturePolicyOptionList(int i) {
33543 			return getRuleContext(QueryCapturePolicyOptionListContext.class,i);
33544 		}
33545 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33546 		public TerminalNode COMMA_(int i) {
33547 			return getToken(SQLServerStatementParser.COMMA_, i);
33548 		}
33549 		public QueryStoreOptionListContext(ParserRuleContext parent, int invokingState) {
33550 			super(parent, invokingState);
33551 		}
33552 		@Override public int getRuleIndex() { return RULE_queryStoreOptionList; }
33553 		@Override
33554 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33555 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryStoreOptionList(this);
33556 			else return visitor.visitChildren(this);
33557 		}
33558 	}
33559 
33560 	public final QueryStoreOptionListContext queryStoreOptionList() throws RecognitionException {
33561 		QueryStoreOptionListContext _localctx = new QueryStoreOptionListContext(_ctx, getState());
33562 		enterRule(_localctx, 646, RULE_queryStoreOptionList);
33563 		int _la;
33564 		try {
33565 			setState(4766);
33566 			_errHandler.sync(this);
33567 			switch (_input.LA(1)) {
33568 			case OPERATION_MODE:
33569 				enterOuterAlt(_localctx, 1);
33570 				{
33571 				setState(4722);
33572 				match(OPERATION_MODE);
33573 				setState(4723);
33574 				match(EQ_);
33575 				setState(4724);
33576 				_la = _input.LA(1);
33577 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
33578 				_errHandler.recoverInline(this);
33579 				}
33580 				else {
33581 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33582 					_errHandler.reportMatch(this);
33583 					consume();
33584 				}
33585 				}
33586 				break;
33587 			case CLEANUP_POLICY:
33588 				enterOuterAlt(_localctx, 2);
33589 				{
33590 				setState(4725);
33591 				match(CLEANUP_POLICY);
33592 				setState(4726);
33593 				match(EQ_);
33594 				setState(4727);
33595 				match(LP_);
33596 				setState(4728);
33597 				match(STALE_QUERY_THRESHOLD_DAYS);
33598 				setState(4729);
33599 				match(EQ_);
33600 				setState(4730);
33601 				match(NUMBER_);
33602 				setState(4731);
33603 				match(RP_);
33604 				}
33605 				break;
33606 			case DATA_FLUSH_INTERVAL_SECONDS:
33607 				enterOuterAlt(_localctx, 3);
33608 				{
33609 				setState(4732);
33610 				match(DATA_FLUSH_INTERVAL_SECONDS);
33611 				setState(4733);
33612 				match(EQ_);
33613 				setState(4734);
33614 				match(NUMBER_);
33615 				}
33616 				break;
33617 			case MAX_STORAGE_SIZE_MB:
33618 				enterOuterAlt(_localctx, 4);
33619 				{
33620 				setState(4735);
33621 				match(MAX_STORAGE_SIZE_MB);
33622 				setState(4736);
33623 				match(EQ_);
33624 				setState(4737);
33625 				match(NUMBER_);
33626 				}
33627 				break;
33628 			case INTERVAL_LENGTH_MINUTES:
33629 				enterOuterAlt(_localctx, 5);
33630 				{
33631 				setState(4738);
33632 				match(INTERVAL_LENGTH_MINUTES);
33633 				setState(4739);
33634 				match(EQ_);
33635 				setState(4740);
33636 				match(NUMBER_);
33637 				}
33638 				break;
33639 			case SIZE_BASED_CLEANUP_MODE:
33640 				enterOuterAlt(_localctx, 6);
33641 				{
33642 				setState(4741);
33643 				match(SIZE_BASED_CLEANUP_MODE);
33644 				setState(4742);
33645 				match(EQ_);
33646 				setState(4743);
33647 				_la = _input.LA(1);
33648 				if ( !(_la==OFF || _la==AUTO) ) {
33649 				_errHandler.recoverInline(this);
33650 				}
33651 				else {
33652 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33653 					_errHandler.reportMatch(this);
33654 					consume();
33655 				}
33656 				}
33657 				break;
33658 			case QUERY_CAPTURE_MODE:
33659 				enterOuterAlt(_localctx, 7);
33660 				{
33661 				setState(4744);
33662 				match(QUERY_CAPTURE_MODE);
33663 				setState(4745);
33664 				match(EQ_);
33665 				setState(4746);
33666 				_la = _input.LA(1);
33667 				if ( !(_la==ALL || _la==AUTO || _la==NONE || _la==CUSTOM) ) {
33668 				_errHandler.recoverInline(this);
33669 				}
33670 				else {
33671 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33672 					_errHandler.reportMatch(this);
33673 					consume();
33674 				}
33675 				}
33676 				break;
33677 			case MAX_PLANS_PER_QUERY:
33678 				enterOuterAlt(_localctx, 8);
33679 				{
33680 				setState(4747);
33681 				match(MAX_PLANS_PER_QUERY);
33682 				setState(4748);
33683 				match(EQ_);
33684 				setState(4749);
33685 				match(NUMBER_);
33686 				}
33687 				break;
33688 			case WAIT_STATS_CAPTURE_MODE:
33689 				enterOuterAlt(_localctx, 9);
33690 				{
33691 				setState(4750);
33692 				match(WAIT_STATS_CAPTURE_MODE);
33693 				setState(4751);
33694 				match(EQ_);
33695 				setState(4752);
33696 				_la = _input.LA(1);
33697 				if ( !(_la==ON || _la==OFF) ) {
33698 				_errHandler.recoverInline(this);
33699 				}
33700 				else {
33701 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33702 					_errHandler.reportMatch(this);
33703 					consume();
33704 				}
33705 				}
33706 				break;
33707 			case QUERY_CAPTURE_POLICY:
33708 				enterOuterAlt(_localctx, 10);
33709 				{
33710 				setState(4753);
33711 				match(QUERY_CAPTURE_POLICY);
33712 				setState(4754);
33713 				match(EQ_);
33714 				setState(4755);
33715 				match(LP_);
33716 				setState(4756);
33717 				queryCapturePolicyOptionList();
33718 				setState(4761);
33719 				_errHandler.sync(this);
33720 				_la = _input.LA(1);
33721 				while (_la==COMMA_) {
33722 					{
33723 					{
33724 					setState(4757);
33725 					match(COMMA_);
33726 					setState(4758);
33727 					queryCapturePolicyOptionList();
33728 					}
33729 					}
33730 					setState(4763);
33731 					_errHandler.sync(this);
33732 					_la = _input.LA(1);
33733 				}
33734 				setState(4764);
33735 				match(RP_);
33736 				}
33737 				break;
33738 			default:
33739 				throw new NoViableAltException(this);
33740 			}
33741 		}
33742 		catch (RecognitionException re) {
33743 			_localctx.exception = re;
33744 			_errHandler.reportError(this, re);
33745 			_errHandler.recover(this, re);
33746 		}
33747 		finally {
33748 			exitRule();
33749 		}
33750 		return _localctx;
33751 	}
33752 
33753 	public static class QueryCapturePolicyOptionListContext extends ParserRuleContext {
33754 		public TerminalNode STALE_CAPTURE_POLICY_THRESHOLD() { return getToken(SQLServerStatementParser.STALE_CAPTURE_POLICY_THRESHOLD, 0); }
33755 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33756 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33757 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
33758 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
33759 		public TerminalNode EXECUTION_COUNT() { return getToken(SQLServerStatementParser.EXECUTION_COUNT, 0); }
33760 		public TerminalNode TOTAL_COMPILE_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_COMPILE_CPU_TIME_MS, 0); }
33761 		public TerminalNode TOTAL_EXECUTION_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_EXECUTION_CPU_TIME_MS, 0); }
33762 		public QueryCapturePolicyOptionListContext(ParserRuleContext parent, int invokingState) {
33763 			super(parent, invokingState);
33764 		}
33765 		@Override public int getRuleIndex() { return RULE_queryCapturePolicyOptionList; }
33766 		@Override
33767 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33768 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryCapturePolicyOptionList(this);
33769 			else return visitor.visitChildren(this);
33770 		}
33771 	}
33772 
33773 	public final QueryCapturePolicyOptionListContext queryCapturePolicyOptionList() throws RecognitionException {
33774 		QueryCapturePolicyOptionListContext _localctx = new QueryCapturePolicyOptionListContext(_ctx, getState());
33775 		enterRule(_localctx, 648, RULE_queryCapturePolicyOptionList);
33776 		int _la;
33777 		try {
33778 			setState(4781);
33779 			_errHandler.sync(this);
33780 			switch (_input.LA(1)) {
33781 			case STALE_CAPTURE_POLICY_THRESHOLD:
33782 				enterOuterAlt(_localctx, 1);
33783 				{
33784 				setState(4768);
33785 				match(STALE_CAPTURE_POLICY_THRESHOLD);
33786 				setState(4769);
33787 				match(EQ_);
33788 				setState(4770);
33789 				match(NUMBER_);
33790 				setState(4771);
33791 				_la = _input.LA(1);
33792 				if ( !(_la==DAYS || _la==HOURS) ) {
33793 				_errHandler.recoverInline(this);
33794 				}
33795 				else {
33796 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33797 					_errHandler.reportMatch(this);
33798 					consume();
33799 				}
33800 				}
33801 				break;
33802 			case EXECUTION_COUNT:
33803 				enterOuterAlt(_localctx, 2);
33804 				{
33805 				setState(4772);
33806 				match(EXECUTION_COUNT);
33807 				setState(4773);
33808 				match(EQ_);
33809 				setState(4774);
33810 				match(NUMBER_);
33811 				}
33812 				break;
33813 			case TOTAL_COMPILE_CPU_TIME_MS:
33814 				enterOuterAlt(_localctx, 3);
33815 				{
33816 				setState(4775);
33817 				match(TOTAL_COMPILE_CPU_TIME_MS);
33818 				setState(4776);
33819 				match(EQ_);
33820 				setState(4777);
33821 				match(NUMBER_);
33822 				}
33823 				break;
33824 			case TOTAL_EXECUTION_CPU_TIME_MS:
33825 				enterOuterAlt(_localctx, 4);
33826 				{
33827 				setState(4778);
33828 				match(TOTAL_EXECUTION_CPU_TIME_MS);
33829 				setState(4779);
33830 				match(EQ_);
33831 				setState(4780);
33832 				match(NUMBER_);
33833 				}
33834 				break;
33835 			default:
33836 				throw new NoViableAltException(this);
33837 			}
33838 		}
33839 		catch (RecognitionException re) {
33840 			_localctx.exception = re;
33841 			_errHandler.reportError(this, re);
33842 			_errHandler.recover(this, re);
33843 		}
33844 		finally {
33845 			exitRule();
33846 		}
33847 		return _localctx;
33848 	}
33849 
33850 	public static class RecoveryOptionContext extends ParserRuleContext {
33851 		public TerminalNode RECOVERY() { return getToken(SQLServerStatementParser.RECOVERY, 0); }
33852 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
33853 		public TerminalNode BULK_LOGGED() { return getToken(SQLServerStatementParser.BULK_LOGGED, 0); }
33854 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
33855 		public TerminalNode TORN_PAGE_DETECTION() { return getToken(SQLServerStatementParser.TORN_PAGE_DETECTION, 0); }
33856 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33857 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33858 		public TerminalNode PAGE_VERIFY() { return getToken(SQLServerStatementParser.PAGE_VERIFY, 0); }
33859 		public TerminalNode CHECKSUM() { return getToken(SQLServerStatementParser.CHECKSUM, 0); }
33860 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
33861 		public RecoveryOptionContext(ParserRuleContext parent, int invokingState) {
33862 			super(parent, invokingState);
33863 		}
33864 		@Override public int getRuleIndex() { return RULE_recoveryOption; }
33865 		@Override
33866 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33867 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRecoveryOption(this);
33868 			else return visitor.visitChildren(this);
33869 		}
33870 	}
33871 
33872 	public final RecoveryOptionContext recoveryOption() throws RecognitionException {
33873 		RecoveryOptionContext _localctx = new RecoveryOptionContext(_ctx, getState());
33874 		enterRule(_localctx, 650, RULE_recoveryOption);
33875 		int _la;
33876 		try {
33877 			setState(4789);
33878 			_errHandler.sync(this);
33879 			switch (_input.LA(1)) {
33880 			case RECOVERY:
33881 				enterOuterAlt(_localctx, 1);
33882 				{
33883 				setState(4783);
33884 				match(RECOVERY);
33885 				setState(4784);
33886 				_la = _input.LA(1);
33887 				if ( !(_la==FULL || _la==SIMPLE || _la==BULK_LOGGED) ) {
33888 				_errHandler.recoverInline(this);
33889 				}
33890 				else {
33891 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33892 					_errHandler.reportMatch(this);
33893 					consume();
33894 				}
33895 				}
33896 				break;
33897 			case TORN_PAGE_DETECTION:
33898 				enterOuterAlt(_localctx, 2);
33899 				{
33900 				setState(4785);
33901 				match(TORN_PAGE_DETECTION);
33902 				setState(4786);
33903 				_la = _input.LA(1);
33904 				if ( !(_la==ON || _la==OFF) ) {
33905 				_errHandler.recoverInline(this);
33906 				}
33907 				else {
33908 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33909 					_errHandler.reportMatch(this);
33910 					consume();
33911 				}
33912 				}
33913 				break;
33914 			case PAGE_VERIFY:
33915 				enterOuterAlt(_localctx, 3);
33916 				{
33917 				setState(4787);
33918 				match(PAGE_VERIFY);
33919 				setState(4788);
33920 				_la = _input.LA(1);
33921 				if ( !(_la==NONE || _la==CHECKSUM || _la==TORN_PAGE_DETECTION) ) {
33922 				_errHandler.recoverInline(this);
33923 				}
33924 				else {
33925 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33926 					_errHandler.reportMatch(this);
33927 					consume();
33928 				}
33929 				}
33930 				break;
33931 			default:
33932 				throw new NoViableAltException(this);
33933 			}
33934 		}
33935 		catch (RecognitionException re) {
33936 			_localctx.exception = re;
33937 			_errHandler.reportError(this, re);
33938 			_errHandler.recover(this, re);
33939 		}
33940 		finally {
33941 			exitRule();
33942 		}
33943 		return _localctx;
33944 	}
33945 
33946 	public static class SqlOptionContext extends ParserRuleContext {
33947 		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(SQLServerStatementParser.ANSI_NULL_DEFAULT, 0); }
33948 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33949 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33950 		public TerminalNode ANSI_NULLS() { return getToken(SQLServerStatementParser.ANSI_NULLS, 0); }
33951 		public TerminalNode ANSI_PADDING() { return getToken(SQLServerStatementParser.ANSI_PADDING, 0); }
33952 		public TerminalNode ANSI_WARNINGS() { return getToken(SQLServerStatementParser.ANSI_WARNINGS, 0); }
33953 		public TerminalNode ARITHABORT() { return getToken(SQLServerStatementParser.ARITHABORT, 0); }
33954 		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(SQLServerStatementParser.COMPATIBILITY_LEVEL, 0); }
33955 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33956 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33957 		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(SQLServerStatementParser.CONCAT_NULL_YIELDS_NULL, 0); }
33958 		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(SQLServerStatementParser.NUMERIC_ROUNDABORT, 0); }
33959 		public TerminalNode QUOTED_IDENTIFIER() { return getToken(SQLServerStatementParser.QUOTED_IDENTIFIER, 0); }
33960 		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(SQLServerStatementParser.RECURSIVE_TRIGGERS, 0); }
33961 		public SqlOptionContext(ParserRuleContext parent, int invokingState) {
33962 			super(parent, invokingState);
33963 		}
33964 		@Override public int getRuleIndex() { return RULE_sqlOption; }
33965 		@Override
33966 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33967 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSqlOption(this);
33968 			else return visitor.visitChildren(this);
33969 		}
33970 	}
33971 
33972 	public final SqlOptionContext sqlOption() throws RecognitionException {
33973 		SqlOptionContext _localctx = new SqlOptionContext(_ctx, getState());
33974 		enterRule(_localctx, 652, RULE_sqlOption);
33975 		int _la;
33976 		try {
33977 			setState(4812);
33978 			_errHandler.sync(this);
33979 			switch (_input.LA(1)) {
33980 			case ANSI_NULL_DEFAULT:
33981 				enterOuterAlt(_localctx, 1);
33982 				{
33983 				setState(4791);
33984 				match(ANSI_NULL_DEFAULT);
33985 				setState(4792);
33986 				_la = _input.LA(1);
33987 				if ( !(_la==ON || _la==OFF) ) {
33988 				_errHandler.recoverInline(this);
33989 				}
33990 				else {
33991 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33992 					_errHandler.reportMatch(this);
33993 					consume();
33994 				}
33995 				}
33996 				break;
33997 			case ANSI_NULLS:
33998 				enterOuterAlt(_localctx, 2);
33999 				{
34000 				setState(4793);
34001 				match(ANSI_NULLS);
34002 				setState(4794);
34003 				_la = _input.LA(1);
34004 				if ( !(_la==ON || _la==OFF) ) {
34005 				_errHandler.recoverInline(this);
34006 				}
34007 				else {
34008 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34009 					_errHandler.reportMatch(this);
34010 					consume();
34011 				}
34012 				}
34013 				break;
34014 			case ANSI_PADDING:
34015 				enterOuterAlt(_localctx, 3);
34016 				{
34017 				setState(4795);
34018 				match(ANSI_PADDING);
34019 				setState(4796);
34020 				_la = _input.LA(1);
34021 				if ( !(_la==ON || _la==OFF) ) {
34022 				_errHandler.recoverInline(this);
34023 				}
34024 				else {
34025 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34026 					_errHandler.reportMatch(this);
34027 					consume();
34028 				}
34029 				}
34030 				break;
34031 			case ANSI_WARNINGS:
34032 				enterOuterAlt(_localctx, 4);
34033 				{
34034 				setState(4797);
34035 				match(ANSI_WARNINGS);
34036 				setState(4798);
34037 				_la = _input.LA(1);
34038 				if ( !(_la==ON || _la==OFF) ) {
34039 				_errHandler.recoverInline(this);
34040 				}
34041 				else {
34042 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34043 					_errHandler.reportMatch(this);
34044 					consume();
34045 				}
34046 				}
34047 				break;
34048 			case ARITHABORT:
34049 				enterOuterAlt(_localctx, 5);
34050 				{
34051 				setState(4799);
34052 				match(ARITHABORT);
34053 				setState(4800);
34054 				_la = _input.LA(1);
34055 				if ( !(_la==ON || _la==OFF) ) {
34056 				_errHandler.recoverInline(this);
34057 				}
34058 				else {
34059 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34060 					_errHandler.reportMatch(this);
34061 					consume();
34062 				}
34063 				}
34064 				break;
34065 			case COMPATIBILITY_LEVEL:
34066 				enterOuterAlt(_localctx, 6);
34067 				{
34068 				setState(4801);
34069 				match(COMPATIBILITY_LEVEL);
34070 				setState(4802);
34071 				match(EQ_);
34072 				setState(4803);
34073 				match(NUMBER_);
34074 				}
34075 				break;
34076 			case CONCAT_NULL_YIELDS_NULL:
34077 				enterOuterAlt(_localctx, 7);
34078 				{
34079 				setState(4804);
34080 				match(CONCAT_NULL_YIELDS_NULL);
34081 				setState(4805);
34082 				_la = _input.LA(1);
34083 				if ( !(_la==ON || _la==OFF) ) {
34084 				_errHandler.recoverInline(this);
34085 				}
34086 				else {
34087 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34088 					_errHandler.reportMatch(this);
34089 					consume();
34090 				}
34091 				}
34092 				break;
34093 			case NUMERIC_ROUNDABORT:
34094 				enterOuterAlt(_localctx, 8);
34095 				{
34096 				setState(4806);
34097 				match(NUMERIC_ROUNDABORT);
34098 				setState(4807);
34099 				_la = _input.LA(1);
34100 				if ( !(_la==ON || _la==OFF) ) {
34101 				_errHandler.recoverInline(this);
34102 				}
34103 				else {
34104 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34105 					_errHandler.reportMatch(this);
34106 					consume();
34107 				}
34108 				}
34109 				break;
34110 			case QUOTED_IDENTIFIER:
34111 				enterOuterAlt(_localctx, 9);
34112 				{
34113 				setState(4808);
34114 				match(QUOTED_IDENTIFIER);
34115 				setState(4809);
34116 				_la = _input.LA(1);
34117 				if ( !(_la==ON || _la==OFF) ) {
34118 				_errHandler.recoverInline(this);
34119 				}
34120 				else {
34121 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34122 					_errHandler.reportMatch(this);
34123 					consume();
34124 				}
34125 				}
34126 				break;
34127 			case RECURSIVE_TRIGGERS:
34128 				enterOuterAlt(_localctx, 10);
34129 				{
34130 				setState(4810);
34131 				match(RECURSIVE_TRIGGERS);
34132 				setState(4811);
34133 				_la = _input.LA(1);
34134 				if ( !(_la==ON || _la==OFF) ) {
34135 				_errHandler.recoverInline(this);
34136 				}
34137 				else {
34138 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34139 					_errHandler.reportMatch(this);
34140 					consume();
34141 				}
34142 				}
34143 				break;
34144 			default:
34145 				throw new NoViableAltException(this);
34146 			}
34147 		}
34148 		catch (RecognitionException re) {
34149 			_localctx.exception = re;
34150 			_errHandler.reportError(this, re);
34151 			_errHandler.recover(this, re);
34152 		}
34153 		finally {
34154 			exitRule();
34155 		}
34156 		return _localctx;
34157 	}
34158 
34159 	public static class SnapshotOptionContext extends ParserRuleContext {
34160 		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(SQLServerStatementParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
34161 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34162 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34163 		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(SQLServerStatementParser.READ_COMMITTED_SNAPSHOT, 0); }
34164 		public TerminalNode MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, 0); }
34165 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34166 		public SnapshotOptionContext(ParserRuleContext parent, int invokingState) {
34167 			super(parent, invokingState);
34168 		}
34169 		@Override public int getRuleIndex() { return RULE_snapshotOption; }
34170 		@Override
34171 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34172 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSnapshotOption(this);
34173 			else return visitor.visitChildren(this);
34174 		}
34175 	}
34176 
34177 	public final SnapshotOptionContext snapshotOption() throws RecognitionException {
34178 		SnapshotOptionContext _localctx = new SnapshotOptionContext(_ctx, getState());
34179 		enterRule(_localctx, 654, RULE_snapshotOption);
34180 		int _la;
34181 		try {
34182 			setState(4821);
34183 			_errHandler.sync(this);
34184 			switch (_input.LA(1)) {
34185 			case ALLOW_SNAPSHOT_ISOLATION:
34186 				enterOuterAlt(_localctx, 1);
34187 				{
34188 				setState(4814);
34189 				match(ALLOW_SNAPSHOT_ISOLATION);
34190 				setState(4815);
34191 				_la = _input.LA(1);
34192 				if ( !(_la==ON || _la==OFF) ) {
34193 				_errHandler.recoverInline(this);
34194 				}
34195 				else {
34196 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34197 					_errHandler.reportMatch(this);
34198 					consume();
34199 				}
34200 				}
34201 				break;
34202 			case READ_COMMITTED_SNAPSHOT:
34203 				enterOuterAlt(_localctx, 2);
34204 				{
34205 				setState(4816);
34206 				match(READ_COMMITTED_SNAPSHOT);
34207 				setState(4817);
34208 				_la = _input.LA(1);
34209 				if ( !(_la==ON || _la==OFF) ) {
34210 				_errHandler.recoverInline(this);
34211 				}
34212 				else {
34213 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34214 					_errHandler.reportMatch(this);
34215 					consume();
34216 				}
34217 				}
34218 				break;
34219 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
34220 				enterOuterAlt(_localctx, 3);
34221 				{
34222 				setState(4818);
34223 				match(MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT);
34224 				setState(4819);
34225 				match(EQ_);
34226 				setState(4820);
34227 				_la = _input.LA(1);
34228 				if ( !(_la==ON || _la==OFF) ) {
34229 				_errHandler.recoverInline(this);
34230 				}
34231 				else {
34232 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34233 					_errHandler.reportMatch(this);
34234 					consume();
34235 				}
34236 				}
34237 				break;
34238 			default:
34239 				throw new NoViableAltException(this);
34240 			}
34241 		}
34242 		catch (RecognitionException re) {
34243 			_localctx.exception = re;
34244 			_errHandler.reportError(this, re);
34245 			_errHandler.recover(this, re);
34246 		}
34247 		finally {
34248 			exitRule();
34249 		}
34250 		return _localctx;
34251 	}
34252 
34253 	public static class ServiceBrokerOptionContext extends ParserRuleContext {
34254 		public TerminalNode ENABLE_BROKER() { return getToken(SQLServerStatementParser.ENABLE_BROKER, 0); }
34255 		public TerminalNode DISABLE_BROKER() { return getToken(SQLServerStatementParser.DISABLE_BROKER, 0); }
34256 		public TerminalNode NEW_BROKER() { return getToken(SQLServerStatementParser.NEW_BROKER, 0); }
34257 		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(SQLServerStatementParser.ERROR_BROKER_CONVERSATIONS, 0); }
34258 		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(SQLServerStatementParser.HONOR_BROKER_PRIORITY, 0); }
34259 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34260 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34261 		public ServiceBrokerOptionContext(ParserRuleContext parent, int invokingState) {
34262 			super(parent, invokingState);
34263 		}
34264 		@Override public int getRuleIndex() { return RULE_serviceBrokerOption; }
34265 		@Override
34266 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34267 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerOption(this);
34268 			else return visitor.visitChildren(this);
34269 		}
34270 	}
34271 
34272 	public final ServiceBrokerOptionContext serviceBrokerOption() throws RecognitionException {
34273 		ServiceBrokerOptionContext _localctx = new ServiceBrokerOptionContext(_ctx, getState());
34274 		enterRule(_localctx, 656, RULE_serviceBrokerOption);
34275 		int _la;
34276 		try {
34277 			setState(4829);
34278 			_errHandler.sync(this);
34279 			switch (_input.LA(1)) {
34280 			case ENABLE_BROKER:
34281 				enterOuterAlt(_localctx, 1);
34282 				{
34283 				setState(4823);
34284 				match(ENABLE_BROKER);
34285 				}
34286 				break;
34287 			case DISABLE_BROKER:
34288 				enterOuterAlt(_localctx, 2);
34289 				{
34290 				setState(4824);
34291 				match(DISABLE_BROKER);
34292 				}
34293 				break;
34294 			case NEW_BROKER:
34295 				enterOuterAlt(_localctx, 3);
34296 				{
34297 				setState(4825);
34298 				match(NEW_BROKER);
34299 				}
34300 				break;
34301 			case ERROR_BROKER_CONVERSATIONS:
34302 				enterOuterAlt(_localctx, 4);
34303 				{
34304 				setState(4826);
34305 				match(ERROR_BROKER_CONVERSATIONS);
34306 				}
34307 				break;
34308 			case HONOR_BROKER_PRIORITY:
34309 				enterOuterAlt(_localctx, 5);
34310 				{
34311 				setState(4827);
34312 				match(HONOR_BROKER_PRIORITY);
34313 				setState(4828);
34314 				_la = _input.LA(1);
34315 				if ( !(_la==ON || _la==OFF) ) {
34316 				_errHandler.recoverInline(this);
34317 				}
34318 				else {
34319 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34320 					_errHandler.reportMatch(this);
34321 					consume();
34322 				}
34323 				}
34324 				break;
34325 			default:
34326 				throw new NoViableAltException(this);
34327 			}
34328 		}
34329 		catch (RecognitionException re) {
34330 			_localctx.exception = re;
34331 			_errHandler.reportError(this, re);
34332 			_errHandler.recover(this, re);
34333 		}
34334 		finally {
34335 			exitRule();
34336 		}
34337 		return _localctx;
34338 	}
34339 
34340 	public static class TargetRecoveryTimeOptionContext extends ParserRuleContext {
34341 		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(SQLServerStatementParser.TARGET_RECOVERY_TIME, 0); }
34342 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34343 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34344 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
34345 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
34346 		public TargetRecoveryTimeOptionContext(ParserRuleContext parent, int invokingState) {
34347 			super(parent, invokingState);
34348 		}
34349 		@Override public int getRuleIndex() { return RULE_targetRecoveryTimeOption; }
34350 		@Override
34351 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34352 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTargetRecoveryTimeOption(this);
34353 			else return visitor.visitChildren(this);
34354 		}
34355 	}
34356 
34357 	public final TargetRecoveryTimeOptionContext targetRecoveryTimeOption() throws RecognitionException {
34358 		TargetRecoveryTimeOptionContext _localctx = new TargetRecoveryTimeOptionContext(_ctx, getState());
34359 		enterRule(_localctx, 658, RULE_targetRecoveryTimeOption);
34360 		int _la;
34361 		try {
34362 			enterOuterAlt(_localctx, 1);
34363 			{
34364 			setState(4831);
34365 			match(TARGET_RECOVERY_TIME);
34366 			setState(4832);
34367 			match(EQ_);
34368 			setState(4833);
34369 			match(NUMBER_);
34370 			setState(4834);
34371 			_la = _input.LA(1);
34372 			if ( !(_la==MINUTES || _la==SECONDS) ) {
34373 			_errHandler.recoverInline(this);
34374 			}
34375 			else {
34376 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34377 				_errHandler.reportMatch(this);
34378 				consume();
34379 			}
34380 			}
34381 		}
34382 		catch (RecognitionException re) {
34383 			_localctx.exception = re;
34384 			_errHandler.reportError(this, re);
34385 			_errHandler.recover(this, re);
34386 		}
34387 		finally {
34388 			exitRule();
34389 		}
34390 		return _localctx;
34391 	}
34392 
34393 	public static class TerminationContext extends ParserRuleContext {
34394 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
34395 		public TerminalNode AFTER() { return getToken(SQLServerStatementParser.AFTER, 0); }
34396 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34397 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
34398 		public TerminalNode IMMEDIATE() { return getToken(SQLServerStatementParser.IMMEDIATE, 0); }
34399 		public TerminalNode NO_WAIT() { return getToken(SQLServerStatementParser.NO_WAIT, 0); }
34400 		public TerminationContext(ParserRuleContext parent, int invokingState) {
34401 			super(parent, invokingState);
34402 		}
34403 		@Override public int getRuleIndex() { return RULE_termination; }
34404 		@Override
34405 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34406 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTermination(this);
34407 			else return visitor.visitChildren(this);
34408 		}
34409 	}
34410 
34411 	public final TerminationContext termination() throws RecognitionException {
34412 		TerminationContext _localctx = new TerminationContext(_ctx, getState());
34413 		enterRule(_localctx, 660, RULE_termination);
34414 		int _la;
34415 		try {
34416 			setState(4845);
34417 			_errHandler.sync(this);
34418 			switch ( getInterpreter().adaptivePredict(_input,518,_ctx) ) {
34419 			case 1:
34420 				enterOuterAlt(_localctx, 1);
34421 				{
34422 				setState(4836);
34423 				match(ROLLBACK);
34424 				setState(4837);
34425 				match(AFTER);
34426 				setState(4838);
34427 				match(NUMBER_);
34428 				setState(4840);
34429 				_errHandler.sync(this);
34430 				_la = _input.LA(1);
34431 				if (_la==SECONDS) {
34432 					{
34433 					setState(4839);
34434 					match(SECONDS);
34435 					}
34436 				}
34437 
34438 				}
34439 				break;
34440 			case 2:
34441 				enterOuterAlt(_localctx, 2);
34442 				{
34443 				setState(4842);
34444 				match(ROLLBACK);
34445 				setState(4843);
34446 				match(IMMEDIATE);
34447 				}
34448 				break;
34449 			case 3:
34450 				enterOuterAlt(_localctx, 3);
34451 				{
34452 				setState(4844);
34453 				match(NO_WAIT);
34454 				}
34455 				break;
34456 			}
34457 		}
34458 		catch (RecognitionException re) {
34459 			_localctx.exception = re;
34460 			_errHandler.reportError(this, re);
34461 			_errHandler.recover(this, re);
34462 		}
34463 		finally {
34464 			exitRule();
34465 		}
34466 		return _localctx;
34467 	}
34468 
34469 	public static class CreateServiceClauseContext extends ParserRuleContext {
34470 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
34471 		public List<ContractNameContext> contractName() {
34472 			return getRuleContexts(ContractNameContext.class);
34473 		}
34474 		public ContractNameContext contractName(int i) {
34475 			return getRuleContext(ContractNameContext.class,i);
34476 		}
34477 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
34478 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34479 		public TerminalNode COMMA_(int i) {
34480 			return getToken(SQLServerStatementParser.COMMA_, i);
34481 		}
34482 		public CreateServiceClauseContext(ParserRuleContext parent, int invokingState) {
34483 			super(parent, invokingState);
34484 		}
34485 		@Override public int getRuleIndex() { return RULE_createServiceClause; }
34486 		@Override
34487 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34488 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateServiceClause(this);
34489 			else return visitor.visitChildren(this);
34490 		}
34491 	}
34492 
34493 	public final CreateServiceClauseContext createServiceClause() throws RecognitionException {
34494 		CreateServiceClauseContext _localctx = new CreateServiceClauseContext(_ctx, getState());
34495 		enterRule(_localctx, 662, RULE_createServiceClause);
34496 		int _la;
34497 		try {
34498 			enterOuterAlt(_localctx, 1);
34499 			{
34500 			setState(4847);
34501 			match(LP_);
34502 			setState(4848);
34503 			contractName();
34504 			setState(4853);
34505 			_errHandler.sync(this);
34506 			_la = _input.LA(1);
34507 			while (_la==COMMA_) {
34508 				{
34509 				{
34510 				setState(4849);
34511 				match(COMMA_);
34512 				setState(4850);
34513 				contractName();
34514 				}
34515 				}
34516 				setState(4855);
34517 				_errHandler.sync(this);
34518 				_la = _input.LA(1);
34519 			}
34520 			setState(4856);
34521 			match(RP_);
34522 			}
34523 		}
34524 		catch (RecognitionException re) {
34525 			_localctx.exception = re;
34526 			_errHandler.reportError(this, re);
34527 			_errHandler.recover(this, re);
34528 		}
34529 		finally {
34530 			exitRule();
34531 		}
34532 		return _localctx;
34533 	}
34534 
34535 	public static class AlterServiceClauseContext extends ParserRuleContext {
34536 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
34537 		public List<AlterServiceOptArgContext> alterServiceOptArg() {
34538 			return getRuleContexts(AlterServiceOptArgContext.class);
34539 		}
34540 		public AlterServiceOptArgContext alterServiceOptArg(int i) {
34541 			return getRuleContext(AlterServiceOptArgContext.class,i);
34542 		}
34543 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
34544 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34545 		public TerminalNode COMMA_(int i) {
34546 			return getToken(SQLServerStatementParser.COMMA_, i);
34547 		}
34548 		public AlterServiceClauseContext(ParserRuleContext parent, int invokingState) {
34549 			super(parent, invokingState);
34550 		}
34551 		@Override public int getRuleIndex() { return RULE_alterServiceClause; }
34552 		@Override
34553 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34554 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterServiceClause(this);
34555 			else return visitor.visitChildren(this);
34556 		}
34557 	}
34558 
34559 	public final AlterServiceClauseContext alterServiceClause() throws RecognitionException {
34560 		AlterServiceClauseContext _localctx = new AlterServiceClauseContext(_ctx, getState());
34561 		enterRule(_localctx, 664, RULE_alterServiceClause);
34562 		int _la;
34563 		try {
34564 			enterOuterAlt(_localctx, 1);
34565 			{
34566 			setState(4858);
34567 			match(LP_);
34568 			setState(4859);
34569 			alterServiceOptArg();
34570 			setState(4864);
34571 			_errHandler.sync(this);
34572 			_la = _input.LA(1);
34573 			while (_la==COMMA_) {
34574 				{
34575 				{
34576 				setState(4860);
34577 				match(COMMA_);
34578 				setState(4861);
34579 				alterServiceOptArg();
34580 				}
34581 				}
34582 				setState(4866);
34583 				_errHandler.sync(this);
34584 				_la = _input.LA(1);
34585 			}
34586 			setState(4867);
34587 			match(RP_);
34588 			}
34589 		}
34590 		catch (RecognitionException re) {
34591 			_localctx.exception = re;
34592 			_errHandler.reportError(this, re);
34593 			_errHandler.recover(this, re);
34594 		}
34595 		finally {
34596 			exitRule();
34597 		}
34598 		return _localctx;
34599 	}
34600 
34601 	public static class AlterServiceOptArgContext extends ParserRuleContext {
34602 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
34603 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
34604 		public ContractNameContext contractName() {
34605 			return getRuleContext(ContractNameContext.class,0);
34606 		}
34607 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
34608 		public AlterServiceOptArgContext(ParserRuleContext parent, int invokingState) {
34609 			super(parent, invokingState);
34610 		}
34611 		@Override public int getRuleIndex() { return RULE_alterServiceOptArg; }
34612 		@Override
34613 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34614 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterServiceOptArg(this);
34615 			else return visitor.visitChildren(this);
34616 		}
34617 	}
34618 
34619 	public final AlterServiceOptArgContext alterServiceOptArg() throws RecognitionException {
34620 		AlterServiceOptArgContext _localctx = new AlterServiceOptArgContext(_ctx, getState());
34621 		enterRule(_localctx, 666, RULE_alterServiceOptArg);
34622 		try {
34623 			setState(4875);
34624 			_errHandler.sync(this);
34625 			switch (_input.LA(1)) {
34626 			case ADD:
34627 				enterOuterAlt(_localctx, 1);
34628 				{
34629 				setState(4869);
34630 				match(ADD);
34631 				setState(4870);
34632 				match(CONTRACT);
34633 				setState(4871);
34634 				contractName();
34635 				}
34636 				break;
34637 			case DROP:
34638 				enterOuterAlt(_localctx, 2);
34639 				{
34640 				setState(4872);
34641 				match(DROP);
34642 				setState(4873);
34643 				match(CONTRACT);
34644 				setState(4874);
34645 				contractName();
34646 				}
34647 				break;
34648 			default:
34649 				throw new NoViableAltException(this);
34650 			}
34651 		}
34652 		catch (RecognitionException re) {
34653 			_localctx.exception = re;
34654 			_errHandler.reportError(this, re);
34655 			_errHandler.recover(this, re);
34656 		}
34657 		finally {
34658 			exitRule();
34659 		}
34660 		return _localctx;
34661 	}
34662 
34663 	public static class SchemaNameClauseContext extends ParserRuleContext {
34664 		public SchemaNameContext schemaName() {
34665 			return getRuleContext(SchemaNameContext.class,0);
34666 		}
34667 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
34668 		public IgnoredIdentifierContext ignoredIdentifier() {
34669 			return getRuleContext(IgnoredIdentifierContext.class,0);
34670 		}
34671 		public SchemaNameClauseContext(ParserRuleContext parent, int invokingState) {
34672 			super(parent, invokingState);
34673 		}
34674 		@Override public int getRuleIndex() { return RULE_schemaNameClause; }
34675 		@Override
34676 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34677 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaNameClause(this);
34678 			else return visitor.visitChildren(this);
34679 		}
34680 	}
34681 
34682 	public final SchemaNameClauseContext schemaNameClause() throws RecognitionException {
34683 		SchemaNameClauseContext _localctx = new SchemaNameClauseContext(_ctx, getState());
34684 		enterRule(_localctx, 668, RULE_schemaNameClause);
34685 		try {
34686 			setState(4884);
34687 			_errHandler.sync(this);
34688 			switch ( getInterpreter().adaptivePredict(_input,522,_ctx) ) {
34689 			case 1:
34690 				enterOuterAlt(_localctx, 1);
34691 				{
34692 				setState(4877);
34693 				schemaName();
34694 				}
34695 				break;
34696 			case 2:
34697 				enterOuterAlt(_localctx, 2);
34698 				{
34699 				setState(4878);
34700 				match(AUTHORIZATION);
34701 				setState(4879);
34702 				ignoredIdentifier();
34703 				}
34704 				break;
34705 			case 3:
34706 				enterOuterAlt(_localctx, 3);
34707 				{
34708 				setState(4880);
34709 				schemaName();
34710 				setState(4881);
34711 				match(AUTHORIZATION);
34712 				setState(4882);
34713 				ignoredIdentifier();
34714 				}
34715 				break;
34716 			}
34717 		}
34718 		catch (RecognitionException re) {
34719 			_localctx.exception = re;
34720 			_errHandler.reportError(this, re);
34721 			_errHandler.recover(this, re);
34722 		}
34723 		finally {
34724 			exitRule();
34725 		}
34726 		return _localctx;
34727 	}
34728 
34729 	public static class SchemaElementContext extends ParserRuleContext {
34730 		public CreateTableContext createTable() {
34731 			return getRuleContext(CreateTableContext.class,0);
34732 		}
34733 		public CreateViewContext createView() {
34734 			return getRuleContext(CreateViewContext.class,0);
34735 		}
34736 		public GrantContext grant() {
34737 			return getRuleContext(GrantContext.class,0);
34738 		}
34739 		public RevokeContext revoke() {
34740 			return getRuleContext(RevokeContext.class,0);
34741 		}
34742 		public DenyContext deny() {
34743 			return getRuleContext(DenyContext.class,0);
34744 		}
34745 		public SchemaElementContext(ParserRuleContext parent, int invokingState) {
34746 			super(parent, invokingState);
34747 		}
34748 		@Override public int getRuleIndex() { return RULE_schemaElement; }
34749 		@Override
34750 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34751 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaElement(this);
34752 			else return visitor.visitChildren(this);
34753 		}
34754 	}
34755 
34756 	public final SchemaElementContext schemaElement() throws RecognitionException {
34757 		SchemaElementContext _localctx = new SchemaElementContext(_ctx, getState());
34758 		enterRule(_localctx, 670, RULE_schemaElement);
34759 		try {
34760 			setState(4891);
34761 			_errHandler.sync(this);
34762 			switch ( getInterpreter().adaptivePredict(_input,523,_ctx) ) {
34763 			case 1:
34764 				enterOuterAlt(_localctx, 1);
34765 				{
34766 				setState(4886);
34767 				createTable();
34768 				}
34769 				break;
34770 			case 2:
34771 				enterOuterAlt(_localctx, 2);
34772 				{
34773 				setState(4887);
34774 				createView();
34775 				}
34776 				break;
34777 			case 3:
34778 				enterOuterAlt(_localctx, 3);
34779 				{
34780 				setState(4888);
34781 				grant();
34782 				}
34783 				break;
34784 			case 4:
34785 				enterOuterAlt(_localctx, 4);
34786 				{
34787 				setState(4889);
34788 				revoke();
34789 				}
34790 				break;
34791 			case 5:
34792 				enterOuterAlt(_localctx, 5);
34793 				{
34794 				setState(4890);
34795 				deny();
34796 				}
34797 				break;
34798 			}
34799 		}
34800 		catch (RecognitionException re) {
34801 			_localctx.exception = re;
34802 			_errHandler.reportError(this, re);
34803 			_errHandler.recover(this, re);
34804 		}
34805 		finally {
34806 			exitRule();
34807 		}
34808 		return _localctx;
34809 	}
34810 
34811 	public static class CreateTableAsSelectClauseContext extends ParserRuleContext {
34812 		public CreateTableAsSelectContext createTableAsSelect() {
34813 			return getRuleContext(CreateTableAsSelectContext.class,0);
34814 		}
34815 		public CreateRemoteTableAsSelectContext createRemoteTableAsSelect() {
34816 			return getRuleContext(CreateRemoteTableAsSelectContext.class,0);
34817 		}
34818 		public CreateTableAsSelectClauseContext(ParserRuleContext parent, int invokingState) {
34819 			super(parent, invokingState);
34820 		}
34821 		@Override public int getRuleIndex() { return RULE_createTableAsSelectClause; }
34822 		@Override
34823 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34824 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableAsSelectClause(this);
34825 			else return visitor.visitChildren(this);
34826 		}
34827 	}
34828 
34829 	public final CreateTableAsSelectClauseContext createTableAsSelectClause() throws RecognitionException {
34830 		CreateTableAsSelectClauseContext _localctx = new CreateTableAsSelectClauseContext(_ctx, getState());
34831 		enterRule(_localctx, 672, RULE_createTableAsSelectClause);
34832 		try {
34833 			setState(4895);
34834 			_errHandler.sync(this);
34835 			switch ( getInterpreter().adaptivePredict(_input,524,_ctx) ) {
34836 			case 1:
34837 				enterOuterAlt(_localctx, 1);
34838 				{
34839 				setState(4893);
34840 				createTableAsSelect();
34841 				}
34842 				break;
34843 			case 2:
34844 				enterOuterAlt(_localctx, 2);
34845 				{
34846 				setState(4894);
34847 				createRemoteTableAsSelect();
34848 				}
34849 				break;
34850 			}
34851 		}
34852 		catch (RecognitionException re) {
34853 			_localctx.exception = re;
34854 			_errHandler.reportError(this, re);
34855 			_errHandler.recover(this, re);
34856 		}
34857 		finally {
34858 			exitRule();
34859 		}
34860 		return _localctx;
34861 	}
34862 
34863 	public static class CreateTableAsSelectContext extends ParserRuleContext {
34864 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
34865 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
34866 		public TableNameContext tableName() {
34867 			return getRuleContext(TableNameContext.class,0);
34868 		}
34869 		public WithDistributionOptionContext withDistributionOption() {
34870 			return getRuleContext(WithDistributionOptionContext.class,0);
34871 		}
34872 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
34873 		public SelectContext select() {
34874 			return getRuleContext(SelectContext.class,0);
34875 		}
34876 		public OptionQueryHintClauseContext optionQueryHintClause() {
34877 			return getRuleContext(OptionQueryHintClauseContext.class,0);
34878 		}
34879 		public ColumnNamesContext columnNames() {
34880 			return getRuleContext(ColumnNamesContext.class,0);
34881 		}
34882 		public CreateTableAsSelectContext(ParserRuleContext parent, int invokingState) {
34883 			super(parent, invokingState);
34884 		}
34885 		@Override public int getRuleIndex() { return RULE_createTableAsSelect; }
34886 		@Override
34887 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34888 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableAsSelect(this);
34889 			else return visitor.visitChildren(this);
34890 		}
34891 	}
34892 
34893 	public final CreateTableAsSelectContext createTableAsSelect() throws RecognitionException {
34894 		CreateTableAsSelectContext _localctx = new CreateTableAsSelectContext(_ctx, getState());
34895 		enterRule(_localctx, 674, RULE_createTableAsSelect);
34896 		int _la;
34897 		try {
34898 			enterOuterAlt(_localctx, 1);
34899 			{
34900 			setState(4897);
34901 			match(CREATE);
34902 			setState(4898);
34903 			match(TABLE);
34904 			setState(4899);
34905 			tableName();
34906 			setState(4901);
34907 			_errHandler.sync(this);
34908 			_la = _input.LA(1);
34909 			if (_la==LP_) {
34910 				{
34911 				setState(4900);
34912 				columnNames();
34913 				}
34914 			}
34915 
34916 			setState(4903);
34917 			withDistributionOption();
34918 			setState(4904);
34919 			match(AS);
34920 			setState(4905);
34921 			select();
34922 			setState(4906);
34923 			optionQueryHintClause();
34924 			}
34925 		}
34926 		catch (RecognitionException re) {
34927 			_localctx.exception = re;
34928 			_errHandler.reportError(this, re);
34929 			_errHandler.recover(this, re);
34930 		}
34931 		finally {
34932 			exitRule();
34933 		}
34934 		return _localctx;
34935 	}
34936 
34937 	public static class CreateRemoteTableAsSelectContext extends ParserRuleContext {
34938 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
34939 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
34940 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
34941 		public TableNameContext tableName() {
34942 			return getRuleContext(TableNameContext.class,0);
34943 		}
34944 		public TerminalNode AT() { return getToken(SQLServerStatementParser.AT, 0); }
34945 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
34946 		public TerminalNode LP_(int i) {
34947 			return getToken(SQLServerStatementParser.LP_, i);
34948 		}
34949 		public StringLiteralsContext stringLiterals() {
34950 			return getRuleContext(StringLiteralsContext.class,0);
34951 		}
34952 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
34953 		public TerminalNode RP_(int i) {
34954 			return getToken(SQLServerStatementParser.RP_, i);
34955 		}
34956 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
34957 		public SelectContext select() {
34958 			return getRuleContext(SelectContext.class,0);
34959 		}
34960 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
34961 		public TerminalNode BATCH_SIZE() { return getToken(SQLServerStatementParser.BATCH_SIZE, 0); }
34962 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34963 		public TerminalNode INT_NUM_() { return getToken(SQLServerStatementParser.INT_NUM_, 0); }
34964 		public CreateRemoteTableAsSelectContext(ParserRuleContext parent, int invokingState) {
34965 			super(parent, invokingState);
34966 		}
34967 		@Override public int getRuleIndex() { return RULE_createRemoteTableAsSelect; }
34968 		@Override
34969 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34970 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateRemoteTableAsSelect(this);
34971 			else return visitor.visitChildren(this);
34972 		}
34973 	}
34974 
34975 	public final CreateRemoteTableAsSelectContext createRemoteTableAsSelect() throws RecognitionException {
34976 		CreateRemoteTableAsSelectContext _localctx = new CreateRemoteTableAsSelectContext(_ctx, getState());
34977 		enterRule(_localctx, 676, RULE_createRemoteTableAsSelect);
34978 		int _la;
34979 		try {
34980 			enterOuterAlt(_localctx, 1);
34981 			{
34982 			setState(4908);
34983 			match(CREATE);
34984 			setState(4909);
34985 			match(REMOTE);
34986 			setState(4910);
34987 			match(TABLE);
34988 			setState(4911);
34989 			tableName();
34990 			setState(4912);
34991 			match(AT);
34992 			setState(4913);
34993 			match(LP_);
34994 			setState(4914);
34995 			stringLiterals();
34996 			setState(4915);
34997 			match(RP_);
34998 			setState(4922);
34999 			_errHandler.sync(this);
35000 			_la = _input.LA(1);
35001 			if (_la==WITH) {
35002 				{
35003 				setState(4916);
35004 				match(WITH);
35005 				setState(4917);
35006 				match(LP_);
35007 				setState(4918);
35008 				match(BATCH_SIZE);
35009 				setState(4919);
35010 				match(EQ_);
35011 				setState(4920);
35012 				match(INT_NUM_);
35013 				setState(4921);
35014 				match(RP_);
35015 				}
35016 			}
35017 
35018 			setState(4924);
35019 			match(AS);
35020 			setState(4925);
35021 			select();
35022 			}
35023 		}
35024 		catch (RecognitionException re) {
35025 			_localctx.exception = re;
35026 			_errHandler.reportError(this, re);
35027 			_errHandler.recover(this, re);
35028 		}
35029 		finally {
35030 			exitRule();
35031 		}
35032 		return _localctx;
35033 	}
35034 
35035 	public static class WithDistributionOptionContext extends ParserRuleContext {
35036 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
35037 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35038 		public DistributionOptionContext distributionOption() {
35039 			return getRuleContext(DistributionOptionContext.class,0);
35040 		}
35041 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35042 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35043 		public TerminalNode COMMA_(int i) {
35044 			return getToken(SQLServerStatementParser.COMMA_, i);
35045 		}
35046 		public List<TableOptionContext> tableOption() {
35047 			return getRuleContexts(TableOptionContext.class);
35048 		}
35049 		public TableOptionContext tableOption(int i) {
35050 			return getRuleContext(TableOptionContext.class,i);
35051 		}
35052 		public WithDistributionOptionContext(ParserRuleContext parent, int invokingState) {
35053 			super(parent, invokingState);
35054 		}
35055 		@Override public int getRuleIndex() { return RULE_withDistributionOption; }
35056 		@Override
35057 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35058 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithDistributionOption(this);
35059 			else return visitor.visitChildren(this);
35060 		}
35061 	}
35062 
35063 	public final WithDistributionOptionContext withDistributionOption() throws RecognitionException {
35064 		WithDistributionOptionContext _localctx = new WithDistributionOptionContext(_ctx, getState());
35065 		enterRule(_localctx, 678, RULE_withDistributionOption);
35066 		int _la;
35067 		try {
35068 			enterOuterAlt(_localctx, 1);
35069 			{
35070 			setState(4927);
35071 			match(WITH);
35072 			setState(4928);
35073 			match(LP_);
35074 			setState(4929);
35075 			distributionOption();
35076 			setState(4939);
35077 			_errHandler.sync(this);
35078 			_la = _input.LA(1);
35079 			if (_la==COMMA_) {
35080 				{
35081 				setState(4930);
35082 				match(COMMA_);
35083 				setState(4931);
35084 				tableOption();
35085 				setState(4936);
35086 				_errHandler.sync(this);
35087 				_la = _input.LA(1);
35088 				while (_la==COMMA_) {
35089 					{
35090 					{
35091 					setState(4932);
35092 					match(COMMA_);
35093 					setState(4933);
35094 					tableOption();
35095 					}
35096 					}
35097 					setState(4938);
35098 					_errHandler.sync(this);
35099 					_la = _input.LA(1);
35100 				}
35101 				}
35102 			}
35103 
35104 			setState(4941);
35105 			match(RP_);
35106 			}
35107 		}
35108 		catch (RecognitionException re) {
35109 			_localctx.exception = re;
35110 			_errHandler.reportError(this, re);
35111 			_errHandler.recover(this, re);
35112 		}
35113 		finally {
35114 			exitRule();
35115 		}
35116 		return _localctx;
35117 	}
35118 
35119 	public static class OptionQueryHintClauseContext extends ParserRuleContext {
35120 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
35121 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35122 		public List<QueryHintContext> queryHint() {
35123 			return getRuleContexts(QueryHintContext.class);
35124 		}
35125 		public QueryHintContext queryHint(int i) {
35126 			return getRuleContext(QueryHintContext.class,i);
35127 		}
35128 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35129 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35130 		public TerminalNode COMMA_(int i) {
35131 			return getToken(SQLServerStatementParser.COMMA_, i);
35132 		}
35133 		public OptionQueryHintClauseContext(ParserRuleContext parent, int invokingState) {
35134 			super(parent, invokingState);
35135 		}
35136 		@Override public int getRuleIndex() { return RULE_optionQueryHintClause; }
35137 		@Override
35138 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35139 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionQueryHintClause(this);
35140 			else return visitor.visitChildren(this);
35141 		}
35142 	}
35143 
35144 	public final OptionQueryHintClauseContext optionQueryHintClause() throws RecognitionException {
35145 		OptionQueryHintClauseContext _localctx = new OptionQueryHintClauseContext(_ctx, getState());
35146 		enterRule(_localctx, 680, RULE_optionQueryHintClause);
35147 		int _la;
35148 		try {
35149 			enterOuterAlt(_localctx, 1);
35150 			{
35151 			setState(4955);
35152 			_errHandler.sync(this);
35153 			_la = _input.LA(1);
35154 			if (_la==OPTION) {
35155 				{
35156 				setState(4943);
35157 				match(OPTION);
35158 				setState(4944);
35159 				match(LP_);
35160 				setState(4945);
35161 				queryHint();
35162 				setState(4950);
35163 				_errHandler.sync(this);
35164 				_la = _input.LA(1);
35165 				while (_la==COMMA_) {
35166 					{
35167 					{
35168 					setState(4946);
35169 					match(COMMA_);
35170 					setState(4947);
35171 					queryHint();
35172 					}
35173 					}
35174 					setState(4952);
35175 					_errHandler.sync(this);
35176 					_la = _input.LA(1);
35177 				}
35178 				setState(4953);
35179 				match(RP_);
35180 				}
35181 			}
35182 
35183 			}
35184 		}
35185 		catch (RecognitionException re) {
35186 			_localctx.exception = re;
35187 			_errHandler.reportError(this, re);
35188 			_errHandler.recover(this, re);
35189 		}
35190 		finally {
35191 			exitRule();
35192 		}
35193 		return _localctx;
35194 	}
35195 
35196 	public static class InsertContext extends ParserRuleContext {
35197 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
35198 		public TableNameContext tableName() {
35199 			return getRuleContext(TableNameContext.class,0);
35200 		}
35201 		public InsertDefaultValueContext insertDefaultValue() {
35202 			return getRuleContext(InsertDefaultValueContext.class,0);
35203 		}
35204 		public InsertValuesClauseContext insertValuesClause() {
35205 			return getRuleContext(InsertValuesClauseContext.class,0);
35206 		}
35207 		public InsertSelectClauseContext insertSelectClause() {
35208 			return getRuleContext(InsertSelectClauseContext.class,0);
35209 		}
35210 		public InsertExecClauseContext insertExecClause() {
35211 			return getRuleContext(InsertExecClauseContext.class,0);
35212 		}
35213 		public WithClauseContext withClause() {
35214 			return getRuleContext(WithClauseContext.class,0);
35215 		}
35216 		public TopContext top() {
35217 			return getRuleContext(TopContext.class,0);
35218 		}
35219 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
35220 		public AliasContext alias() {
35221 			return getRuleContext(AliasContext.class,0);
35222 		}
35223 		public WithTableHintContext withTableHint() {
35224 			return getRuleContext(WithTableHintContext.class,0);
35225 		}
35226 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
35227 		public InsertContext(ParserRuleContext parent, int invokingState) {
35228 			super(parent, invokingState);
35229 		}
35230 		@Override public int getRuleIndex() { return RULE_insert; }
35231 		@Override
35232 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35233 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsert(this);
35234 			else return visitor.visitChildren(this);
35235 		}
35236 	}
35237 
35238 	public final InsertContext insert() throws RecognitionException {
35239 		InsertContext _localctx = new InsertContext(_ctx, getState());
35240 		enterRule(_localctx, 682, RULE_insert);
35241 		int _la;
35242 		try {
35243 			enterOuterAlt(_localctx, 1);
35244 			{
35245 			setState(4958);
35246 			_errHandler.sync(this);
35247 			_la = _input.LA(1);
35248 			if (_la==WITH) {
35249 				{
35250 				setState(4957);
35251 				withClause();
35252 				}
35253 			}
35254 
35255 			setState(4960);
35256 			match(INSERT);
35257 			setState(4962);
35258 			_errHandler.sync(this);
35259 			switch ( getInterpreter().adaptivePredict(_input,532,_ctx) ) {
35260 			case 1:
35261 				{
35262 				setState(4961);
35263 				top();
35264 				}
35265 				break;
35266 			}
35267 			setState(4965);
35268 			_errHandler.sync(this);
35269 			_la = _input.LA(1);
35270 			if (_la==INTO) {
35271 				{
35272 				setState(4964);
35273 				match(INTO);
35274 				}
35275 			}
35276 
35277 			setState(4967);
35278 			tableName();
35279 			setState(4972);
35280 			_errHandler.sync(this);
35281 			switch ( getInterpreter().adaptivePredict(_input,535,_ctx) ) {
35282 			case 1:
35283 				{
35284 				setState(4969);
35285 				_errHandler.sync(this);
35286 				_la = _input.LA(1);
35287 				if (_la==AS) {
35288 					{
35289 					setState(4968);
35290 					match(AS);
35291 					}
35292 				}
35293 
35294 				setState(4971);
35295 				alias();
35296 				}
35297 				break;
35298 			}
35299 			setState(4975);
35300 			_errHandler.sync(this);
35301 			switch ( getInterpreter().adaptivePredict(_input,536,_ctx) ) {
35302 			case 1:
35303 				{
35304 				setState(4974);
35305 				withTableHint();
35306 				}
35307 				break;
35308 			}
35309 			setState(4981);
35310 			_errHandler.sync(this);
35311 			switch ( getInterpreter().adaptivePredict(_input,537,_ctx) ) {
35312 			case 1:
35313 				{
35314 				setState(4977);
35315 				insertDefaultValue();
35316 				}
35317 				break;
35318 			case 2:
35319 				{
35320 				setState(4978);
35321 				insertValuesClause();
35322 				}
35323 				break;
35324 			case 3:
35325 				{
35326 				setState(4979);
35327 				insertSelectClause();
35328 				}
35329 				break;
35330 			case 4:
35331 				{
35332 				setState(4980);
35333 				insertExecClause();
35334 				}
35335 				break;
35336 			}
35337 			}
35338 		}
35339 		catch (RecognitionException re) {
35340 			_localctx.exception = re;
35341 			_errHandler.reportError(this, re);
35342 			_errHandler.recover(this, re);
35343 		}
35344 		finally {
35345 			exitRule();
35346 		}
35347 		return _localctx;
35348 	}
35349 
35350 	public static class InsertDefaultValueContext extends ParserRuleContext {
35351 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
35352 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
35353 		public ColumnNamesContext columnNames() {
35354 			return getRuleContext(ColumnNamesContext.class,0);
35355 		}
35356 		public OutputClauseContext outputClause() {
35357 			return getRuleContext(OutputClauseContext.class,0);
35358 		}
35359 		public InsertDefaultValueContext(ParserRuleContext parent, int invokingState) {
35360 			super(parent, invokingState);
35361 		}
35362 		@Override public int getRuleIndex() { return RULE_insertDefaultValue; }
35363 		@Override
35364 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35365 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertDefaultValue(this);
35366 			else return visitor.visitChildren(this);
35367 		}
35368 	}
35369 
35370 	public final InsertDefaultValueContext insertDefaultValue() throws RecognitionException {
35371 		InsertDefaultValueContext _localctx = new InsertDefaultValueContext(_ctx, getState());
35372 		enterRule(_localctx, 684, RULE_insertDefaultValue);
35373 		int _la;
35374 		try {
35375 			enterOuterAlt(_localctx, 1);
35376 			{
35377 			setState(4984);
35378 			_errHandler.sync(this);
35379 			_la = _input.LA(1);
35380 			if (_la==LP_) {
35381 				{
35382 				setState(4983);
35383 				columnNames();
35384 				}
35385 			}
35386 
35387 			setState(4987);
35388 			_errHandler.sync(this);
35389 			_la = _input.LA(1);
35390 			if (_la==OUTPUT) {
35391 				{
35392 				setState(4986);
35393 				outputClause();
35394 				}
35395 			}
35396 
35397 			setState(4989);
35398 			match(DEFAULT);
35399 			setState(4990);
35400 			match(VALUES);
35401 			}
35402 		}
35403 		catch (RecognitionException re) {
35404 			_localctx.exception = re;
35405 			_errHandler.reportError(this, re);
35406 			_errHandler.recover(this, re);
35407 		}
35408 		finally {
35409 			exitRule();
35410 		}
35411 		return _localctx;
35412 	}
35413 
35414 	public static class InsertValuesClauseContext extends ParserRuleContext {
35415 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
35416 		public List<AssignmentValuesContext> assignmentValues() {
35417 			return getRuleContexts(AssignmentValuesContext.class);
35418 		}
35419 		public AssignmentValuesContext assignmentValues(int i) {
35420 			return getRuleContext(AssignmentValuesContext.class,i);
35421 		}
35422 		public ColumnNamesContext columnNames() {
35423 			return getRuleContext(ColumnNamesContext.class,0);
35424 		}
35425 		public OutputClauseContext outputClause() {
35426 			return getRuleContext(OutputClauseContext.class,0);
35427 		}
35428 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35429 		public TerminalNode COMMA_(int i) {
35430 			return getToken(SQLServerStatementParser.COMMA_, i);
35431 		}
35432 		public InsertValuesClauseContext(ParserRuleContext parent, int invokingState) {
35433 			super(parent, invokingState);
35434 		}
35435 		@Override public int getRuleIndex() { return RULE_insertValuesClause; }
35436 		@Override
35437 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35438 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertValuesClause(this);
35439 			else return visitor.visitChildren(this);
35440 		}
35441 	}
35442 
35443 	public final InsertValuesClauseContext insertValuesClause() throws RecognitionException {
35444 		InsertValuesClauseContext _localctx = new InsertValuesClauseContext(_ctx, getState());
35445 		enterRule(_localctx, 686, RULE_insertValuesClause);
35446 		int _la;
35447 		try {
35448 			enterOuterAlt(_localctx, 1);
35449 			{
35450 			setState(4993);
35451 			_errHandler.sync(this);
35452 			_la = _input.LA(1);
35453 			if (_la==LP_) {
35454 				{
35455 				setState(4992);
35456 				columnNames();
35457 				}
35458 			}
35459 
35460 			setState(4996);
35461 			_errHandler.sync(this);
35462 			_la = _input.LA(1);
35463 			if (_la==OUTPUT) {
35464 				{
35465 				setState(4995);
35466 				outputClause();
35467 				}
35468 			}
35469 
35470 			setState(4998);
35471 			match(VALUES);
35472 			setState(4999);
35473 			assignmentValues();
35474 			setState(5004);
35475 			_errHandler.sync(this);
35476 			_la = _input.LA(1);
35477 			while (_la==COMMA_) {
35478 				{
35479 				{
35480 				setState(5000);
35481 				match(COMMA_);
35482 				setState(5001);
35483 				assignmentValues();
35484 				}
35485 				}
35486 				setState(5006);
35487 				_errHandler.sync(this);
35488 				_la = _input.LA(1);
35489 			}
35490 			}
35491 		}
35492 		catch (RecognitionException re) {
35493 			_localctx.exception = re;
35494 			_errHandler.reportError(this, re);
35495 			_errHandler.recover(this, re);
35496 		}
35497 		finally {
35498 			exitRule();
35499 		}
35500 		return _localctx;
35501 	}
35502 
35503 	public static class InsertSelectClauseContext extends ParserRuleContext {
35504 		public SelectContext select() {
35505 			return getRuleContext(SelectContext.class,0);
35506 		}
35507 		public ColumnNamesContext columnNames() {
35508 			return getRuleContext(ColumnNamesContext.class,0);
35509 		}
35510 		public OutputClauseContext outputClause() {
35511 			return getRuleContext(OutputClauseContext.class,0);
35512 		}
35513 		public InsertSelectClauseContext(ParserRuleContext parent, int invokingState) {
35514 			super(parent, invokingState);
35515 		}
35516 		@Override public int getRuleIndex() { return RULE_insertSelectClause; }
35517 		@Override
35518 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35519 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertSelectClause(this);
35520 			else return visitor.visitChildren(this);
35521 		}
35522 	}
35523 
35524 	public final InsertSelectClauseContext insertSelectClause() throws RecognitionException {
35525 		InsertSelectClauseContext _localctx = new InsertSelectClauseContext(_ctx, getState());
35526 		enterRule(_localctx, 688, RULE_insertSelectClause);
35527 		int _la;
35528 		try {
35529 			enterOuterAlt(_localctx, 1);
35530 			{
35531 			setState(5008);
35532 			_errHandler.sync(this);
35533 			_la = _input.LA(1);
35534 			if (_la==LP_) {
35535 				{
35536 				setState(5007);
35537 				columnNames();
35538 				}
35539 			}
35540 
35541 			setState(5011);
35542 			_errHandler.sync(this);
35543 			_la = _input.LA(1);
35544 			if (_la==OUTPUT) {
35545 				{
35546 				setState(5010);
35547 				outputClause();
35548 				}
35549 			}
35550 
35551 			setState(5013);
35552 			select();
35553 			}
35554 		}
35555 		catch (RecognitionException re) {
35556 			_localctx.exception = re;
35557 			_errHandler.reportError(this, re);
35558 			_errHandler.recover(this, re);
35559 		}
35560 		finally {
35561 			exitRule();
35562 		}
35563 		return _localctx;
35564 	}
35565 
35566 	public static class InsertExecClauseContext extends ParserRuleContext {
35567 		public ExecContext exec() {
35568 			return getRuleContext(ExecContext.class,0);
35569 		}
35570 		public ColumnNamesContext columnNames() {
35571 			return getRuleContext(ColumnNamesContext.class,0);
35572 		}
35573 		public InsertExecClauseContext(ParserRuleContext parent, int invokingState) {
35574 			super(parent, invokingState);
35575 		}
35576 		@Override public int getRuleIndex() { return RULE_insertExecClause; }
35577 		@Override
35578 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35579 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertExecClause(this);
35580 			else return visitor.visitChildren(this);
35581 		}
35582 	}
35583 
35584 	public final InsertExecClauseContext insertExecClause() throws RecognitionException {
35585 		InsertExecClauseContext _localctx = new InsertExecClauseContext(_ctx, getState());
35586 		enterRule(_localctx, 690, RULE_insertExecClause);
35587 		int _la;
35588 		try {
35589 			enterOuterAlt(_localctx, 1);
35590 			{
35591 			setState(5016);
35592 			_errHandler.sync(this);
35593 			_la = _input.LA(1);
35594 			if (_la==LP_) {
35595 				{
35596 				setState(5015);
35597 				columnNames();
35598 				}
35599 			}
35600 
35601 			setState(5018);
35602 			exec();
35603 			}
35604 		}
35605 		catch (RecognitionException re) {
35606 			_localctx.exception = re;
35607 			_errHandler.reportError(this, re);
35608 			_errHandler.recover(this, re);
35609 		}
35610 		finally {
35611 			exitRule();
35612 		}
35613 		return _localctx;
35614 	}
35615 
35616 	public static class WithTableHintContext extends ParserRuleContext {
35617 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
35618 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35619 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35620 		public List<TableHintLimitedContext> tableHintLimited() {
35621 			return getRuleContexts(TableHintLimitedContext.class);
35622 		}
35623 		public TableHintLimitedContext tableHintLimited(int i) {
35624 			return getRuleContext(TableHintLimitedContext.class,i);
35625 		}
35626 		public WithTableHintContext(ParserRuleContext parent, int invokingState) {
35627 			super(parent, invokingState);
35628 		}
35629 		@Override public int getRuleIndex() { return RULE_withTableHint; }
35630 		@Override
35631 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35632 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithTableHint(this);
35633 			else return visitor.visitChildren(this);
35634 		}
35635 	}
35636 
35637 	public final WithTableHintContext withTableHint() throws RecognitionException {
35638 		WithTableHintContext _localctx = new WithTableHintContext(_ctx, getState());
35639 		enterRule(_localctx, 692, RULE_withTableHint);
35640 		int _la;
35641 		try {
35642 			enterOuterAlt(_localctx, 1);
35643 			{
35644 			setState(5020);
35645 			match(WITH);
35646 			setState(5021);
35647 			match(LP_);
35648 			{
35649 			setState(5023); 
35650 			_errHandler.sync(this);
35651 			_la = _input.LA(1);
35652 			do {
35653 				{
35654 				{
35655 				setState(5022);
35656 				tableHintLimited();
35657 				}
35658 				}
35659 				setState(5025); 
35660 				_errHandler.sync(this);
35661 				_la = _input.LA(1);
35662 			} while ( ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (KEEPIDENTITY - 216)) | (1L << (KEEPDEFAULTS - 216)) | (1L << (HOLDLOCK - 216)) | (1L << (IGNORE_CONSTRAINTS - 216)) | (1L << (IGNORE_TRIGGERS - 216)) | (1L << (NOLOCK - 216)) | (1L << (NOWAIT - 216)) | (1L << (PAGLOCK - 216)) | (1L << (READCOMMITTED - 216)) | (1L << (READCOMMITTEDLOCK - 216)) | (1L << (READPAST - 216)) | (1L << (REPEATABLEREAD - 216)) | (1L << (ROWLOCK - 216)) | (1L << (TABLOCK - 216)) | (1L << (TABLOCKX - 216)) | (1L << (UPDLOCK - 216)) | (1L << (XLOCK - 216)))) != 0) || _la==SNAPSHOT || _la==SERIALIZABLE );
35663 			}
35664 			setState(5027);
35665 			match(RP_);
35666 			}
35667 		}
35668 		catch (RecognitionException re) {
35669 			_localctx.exception = re;
35670 			_errHandler.reportError(this, re);
35671 			_errHandler.recover(this, re);
35672 		}
35673 		finally {
35674 			exitRule();
35675 		}
35676 		return _localctx;
35677 	}
35678 
35679 	public static class ExecContext extends ParserRuleContext {
35680 		public ProcedureNameContext procedureName() {
35681 			return getRuleContext(ProcedureNameContext.class,0);
35682 		}
35683 		public TerminalNode EXEC() { return getToken(SQLServerStatementParser.EXEC, 0); }
35684 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
35685 		public List<ExprContext> expr() {
35686 			return getRuleContexts(ExprContext.class);
35687 		}
35688 		public ExprContext expr(int i) {
35689 			return getRuleContext(ExprContext.class,i);
35690 		}
35691 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35692 		public TerminalNode COMMA_(int i) {
35693 			return getToken(SQLServerStatementParser.COMMA_, i);
35694 		}
35695 		public ExecContext(ParserRuleContext parent, int invokingState) {
35696 			super(parent, invokingState);
35697 		}
35698 		@Override public int getRuleIndex() { return RULE_exec; }
35699 		@Override
35700 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35701 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExec(this);
35702 			else return visitor.visitChildren(this);
35703 		}
35704 	}
35705 
35706 	public final ExecContext exec() throws RecognitionException {
35707 		ExecContext _localctx = new ExecContext(_ctx, getState());
35708 		enterRule(_localctx, 694, RULE_exec);
35709 		int _la;
35710 		try {
35711 			enterOuterAlt(_localctx, 1);
35712 			{
35713 			setState(5029);
35714 			_la = _input.LA(1);
35715 			if ( !(_la==EXECUTE || _la==EXEC) ) {
35716 			_errHandler.recoverInline(this);
35717 			}
35718 			else {
35719 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35720 				_errHandler.reportMatch(this);
35721 				consume();
35722 			}
35723 			setState(5030);
35724 			procedureName();
35725 			setState(5039);
35726 			_errHandler.sync(this);
35727 			switch ( getInterpreter().adaptivePredict(_input,548,_ctx) ) {
35728 			case 1:
35729 				{
35730 				setState(5031);
35731 				expr(0);
35732 				setState(5036);
35733 				_errHandler.sync(this);
35734 				_la = _input.LA(1);
35735 				while (_la==COMMA_) {
35736 					{
35737 					{
35738 					setState(5032);
35739 					match(COMMA_);
35740 					setState(5033);
35741 					expr(0);
35742 					}
35743 					}
35744 					setState(5038);
35745 					_errHandler.sync(this);
35746 					_la = _input.LA(1);
35747 				}
35748 				}
35749 				break;
35750 			}
35751 			}
35752 		}
35753 		catch (RecognitionException re) {
35754 			_localctx.exception = re;
35755 			_errHandler.reportError(this, re);
35756 			_errHandler.recover(this, re);
35757 		}
35758 		finally {
35759 			exitRule();
35760 		}
35761 		return _localctx;
35762 	}
35763 
35764 	public static class UpdateContext extends ParserRuleContext {
35765 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
35766 		public TableReferencesContext tableReferences() {
35767 			return getRuleContext(TableReferencesContext.class,0);
35768 		}
35769 		public SetAssignmentsClauseContext setAssignmentsClause() {
35770 			return getRuleContext(SetAssignmentsClauseContext.class,0);
35771 		}
35772 		public WithClauseContext withClause() {
35773 			return getRuleContext(WithClauseContext.class,0);
35774 		}
35775 		public TopContext top() {
35776 			return getRuleContext(TopContext.class,0);
35777 		}
35778 		public WhereClauseContext whereClause() {
35779 			return getRuleContext(WhereClauseContext.class,0);
35780 		}
35781 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
35782 		public QueryHintContext queryHint() {
35783 			return getRuleContext(QueryHintContext.class,0);
35784 		}
35785 		public UpdateContext(ParserRuleContext parent, int invokingState) {
35786 			super(parent, invokingState);
35787 		}
35788 		@Override public int getRuleIndex() { return RULE_update; }
35789 		@Override
35790 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35791 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUpdate(this);
35792 			else return visitor.visitChildren(this);
35793 		}
35794 	}
35795 
35796 	public final UpdateContext update() throws RecognitionException {
35797 		UpdateContext _localctx = new UpdateContext(_ctx, getState());
35798 		enterRule(_localctx, 696, RULE_update);
35799 		int _la;
35800 		try {
35801 			enterOuterAlt(_localctx, 1);
35802 			{
35803 			setState(5042);
35804 			_errHandler.sync(this);
35805 			_la = _input.LA(1);
35806 			if (_la==WITH) {
35807 				{
35808 				setState(5041);
35809 				withClause();
35810 				}
35811 			}
35812 
35813 			setState(5044);
35814 			match(UPDATE);
35815 			setState(5046);
35816 			_errHandler.sync(this);
35817 			switch ( getInterpreter().adaptivePredict(_input,550,_ctx) ) {
35818 			case 1:
35819 				{
35820 				setState(5045);
35821 				top();
35822 				}
35823 				break;
35824 			}
35825 			setState(5048);
35826 			tableReferences();
35827 			setState(5049);
35828 			setAssignmentsClause();
35829 			setState(5051);
35830 			_errHandler.sync(this);
35831 			_la = _input.LA(1);
35832 			if (_la==WHERE) {
35833 				{
35834 				setState(5050);
35835 				whereClause();
35836 				}
35837 			}
35838 
35839 			setState(5055);
35840 			_errHandler.sync(this);
35841 			_la = _input.LA(1);
35842 			if (_la==OPTION) {
35843 				{
35844 				setState(5053);
35845 				match(OPTION);
35846 				setState(5054);
35847 				queryHint();
35848 				}
35849 			}
35850 
35851 			}
35852 		}
35853 		catch (RecognitionException re) {
35854 			_localctx.exception = re;
35855 			_errHandler.reportError(this, re);
35856 			_errHandler.recover(this, re);
35857 		}
35858 		finally {
35859 			exitRule();
35860 		}
35861 		return _localctx;
35862 	}
35863 
35864 	public static class AssignmentContext extends ParserRuleContext {
35865 		public ColumnNameContext columnName() {
35866 			return getRuleContext(ColumnNameContext.class,0);
35867 		}
35868 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
35869 		public AssignmentValueContext assignmentValue() {
35870 			return getRuleContext(AssignmentValueContext.class,0);
35871 		}
35872 		public AssignmentContext(ParserRuleContext parent, int invokingState) {
35873 			super(parent, invokingState);
35874 		}
35875 		@Override public int getRuleIndex() { return RULE_assignment; }
35876 		@Override
35877 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35878 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignment(this);
35879 			else return visitor.visitChildren(this);
35880 		}
35881 	}
35882 
35883 	public final AssignmentContext assignment() throws RecognitionException {
35884 		AssignmentContext _localctx = new AssignmentContext(_ctx, getState());
35885 		enterRule(_localctx, 698, RULE_assignment);
35886 		try {
35887 			enterOuterAlt(_localctx, 1);
35888 			{
35889 			setState(5057);
35890 			columnName();
35891 			setState(5058);
35892 			match(EQ_);
35893 			setState(5059);
35894 			assignmentValue();
35895 			}
35896 		}
35897 		catch (RecognitionException re) {
35898 			_localctx.exception = re;
35899 			_errHandler.reportError(this, re);
35900 			_errHandler.recover(this, re);
35901 		}
35902 		finally {
35903 			exitRule();
35904 		}
35905 		return _localctx;
35906 	}
35907 
35908 	public static class SetAssignmentsClauseContext extends ParserRuleContext {
35909 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
35910 		public List<AssignmentContext> assignment() {
35911 			return getRuleContexts(AssignmentContext.class);
35912 		}
35913 		public AssignmentContext assignment(int i) {
35914 			return getRuleContext(AssignmentContext.class,i);
35915 		}
35916 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35917 		public TerminalNode COMMA_(int i) {
35918 			return getToken(SQLServerStatementParser.COMMA_, i);
35919 		}
35920 		public FromClauseContext fromClause() {
35921 			return getRuleContext(FromClauseContext.class,0);
35922 		}
35923 		public SetAssignmentsClauseContext(ParserRuleContext parent, int invokingState) {
35924 			super(parent, invokingState);
35925 		}
35926 		@Override public int getRuleIndex() { return RULE_setAssignmentsClause; }
35927 		@Override
35928 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35929 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetAssignmentsClause(this);
35930 			else return visitor.visitChildren(this);
35931 		}
35932 	}
35933 
35934 	public final SetAssignmentsClauseContext setAssignmentsClause() throws RecognitionException {
35935 		SetAssignmentsClauseContext _localctx = new SetAssignmentsClauseContext(_ctx, getState());
35936 		enterRule(_localctx, 700, RULE_setAssignmentsClause);
35937 		int _la;
35938 		try {
35939 			enterOuterAlt(_localctx, 1);
35940 			{
35941 			setState(5061);
35942 			match(SET);
35943 			setState(5062);
35944 			assignment();
35945 			setState(5067);
35946 			_errHandler.sync(this);
35947 			_la = _input.LA(1);
35948 			while (_la==COMMA_) {
35949 				{
35950 				{
35951 				setState(5063);
35952 				match(COMMA_);
35953 				setState(5064);
35954 				assignment();
35955 				}
35956 				}
35957 				setState(5069);
35958 				_errHandler.sync(this);
35959 				_la = _input.LA(1);
35960 			}
35961 			setState(5071);
35962 			_errHandler.sync(this);
35963 			_la = _input.LA(1);
35964 			if (_la==FROM) {
35965 				{
35966 				setState(5070);
35967 				fromClause();
35968 				}
35969 			}
35970 
35971 			}
35972 		}
35973 		catch (RecognitionException re) {
35974 			_localctx.exception = re;
35975 			_errHandler.reportError(this, re);
35976 			_errHandler.recover(this, re);
35977 		}
35978 		finally {
35979 			exitRule();
35980 		}
35981 		return _localctx;
35982 	}
35983 
35984 	public static class AssignmentValuesContext extends ParserRuleContext {
35985 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35986 		public List<AssignmentValueContext> assignmentValue() {
35987 			return getRuleContexts(AssignmentValueContext.class);
35988 		}
35989 		public AssignmentValueContext assignmentValue(int i) {
35990 			return getRuleContext(AssignmentValueContext.class,i);
35991 		}
35992 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35993 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35994 		public TerminalNode COMMA_(int i) {
35995 			return getToken(SQLServerStatementParser.COMMA_, i);
35996 		}
35997 		public AssignmentValuesContext(ParserRuleContext parent, int invokingState) {
35998 			super(parent, invokingState);
35999 		}
36000 		@Override public int getRuleIndex() { return RULE_assignmentValues; }
36001 		@Override
36002 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36003 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignmentValues(this);
36004 			else return visitor.visitChildren(this);
36005 		}
36006 	}
36007 
36008 	public final AssignmentValuesContext assignmentValues() throws RecognitionException {
36009 		AssignmentValuesContext _localctx = new AssignmentValuesContext(_ctx, getState());
36010 		enterRule(_localctx, 702, RULE_assignmentValues);
36011 		int _la;
36012 		try {
36013 			setState(5086);
36014 			_errHandler.sync(this);
36015 			switch ( getInterpreter().adaptivePredict(_input,556,_ctx) ) {
36016 			case 1:
36017 				enterOuterAlt(_localctx, 1);
36018 				{
36019 				setState(5073);
36020 				match(LP_);
36021 				setState(5074);
36022 				assignmentValue();
36023 				setState(5079);
36024 				_errHandler.sync(this);
36025 				_la = _input.LA(1);
36026 				while (_la==COMMA_) {
36027 					{
36028 					{
36029 					setState(5075);
36030 					match(COMMA_);
36031 					setState(5076);
36032 					assignmentValue();
36033 					}
36034 					}
36035 					setState(5081);
36036 					_errHandler.sync(this);
36037 					_la = _input.LA(1);
36038 				}
36039 				setState(5082);
36040 				match(RP_);
36041 				}
36042 				break;
36043 			case 2:
36044 				enterOuterAlt(_localctx, 2);
36045 				{
36046 				setState(5084);
36047 				match(LP_);
36048 				setState(5085);
36049 				match(RP_);
36050 				}
36051 				break;
36052 			}
36053 		}
36054 		catch (RecognitionException re) {
36055 			_localctx.exception = re;
36056 			_errHandler.reportError(this, re);
36057 			_errHandler.recover(this, re);
36058 		}
36059 		finally {
36060 			exitRule();
36061 		}
36062 		return _localctx;
36063 	}
36064 
36065 	public static class AssignmentValueContext extends ParserRuleContext {
36066 		public ExprContext expr() {
36067 			return getRuleContext(ExprContext.class,0);
36068 		}
36069 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
36070 		public AssignmentValueContext(ParserRuleContext parent, int invokingState) {
36071 			super(parent, invokingState);
36072 		}
36073 		@Override public int getRuleIndex() { return RULE_assignmentValue; }
36074 		@Override
36075 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36076 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignmentValue(this);
36077 			else return visitor.visitChildren(this);
36078 		}
36079 	}
36080 
36081 	public final AssignmentValueContext assignmentValue() throws RecognitionException {
36082 		AssignmentValueContext _localctx = new AssignmentValueContext(_ctx, getState());
36083 		enterRule(_localctx, 704, RULE_assignmentValue);
36084 		try {
36085 			setState(5090);
36086 			_errHandler.sync(this);
36087 			switch (_input.LA(1)) {
36088 			case NOT_:
36089 			case TILDE_:
36090 			case PLUS_:
36091 			case MINUS_:
36092 			case LP_:
36093 			case LBE_:
36094 			case QUESTION_:
36095 			case DOLLAR_:
36096 			case TRUNCATE:
36097 			case SCHEMA:
36098 			case COLUMNS:
36099 			case PRECISION:
36100 			case FUNCTION:
36101 			case TRIGGER:
36102 			case CASE:
36103 			case CAST:
36104 			case SUBSTRING:
36105 			case OFF:
36106 			case IF:
36107 			case NOT:
36108 			case NULL:
36109 			case TRUE:
36110 			case FALSE:
36111 			case EXISTS:
36112 			case GROUP:
36113 			case LIMIT:
36114 			case OFFSET:
36115 			case SAVEPOINT:
36116 			case BOOLEAN:
36117 			case CHAR:
36118 			case ARRAY:
36119 			case INTERVAL:
36120 			case DATE:
36121 			case TIME:
36122 			case TIMESTAMP:
36123 			case LOCALTIME:
36124 			case LOCALTIMESTAMP:
36125 			case QUARTER:
36126 			case MONTH:
36127 			case WEEK:
36128 			case DAY:
36129 			case SECOND:
36130 			case MICROSECOND:
36131 			case MAX:
36132 			case MIN:
36133 			case SUM:
36134 			case COUNT:
36135 			case AVG:
36136 			case ENABLE:
36137 			case DISABLE:
36138 			case INSTANCE:
36139 			case DO:
36140 			case DEFINER:
36141 			case SQL:
36142 			case CASCADED:
36143 			case LOCAL:
36144 			case NEXT:
36145 			case NAME:
36146 			case INTEGER:
36147 			case TYPE:
36148 			case TEXT:
36149 			case VIEWS:
36150 			case READ_ONLY:
36151 			case DATABASE:
36152 			case RETURNS:
36153 			case DATEPART:
36154 			case PASSWORD:
36155 			case BINARY:
36156 			case HIDDEN_:
36157 			case MOD:
36158 			case PARTITION:
36159 			case PARTITIONS:
36160 			case TOP:
36161 			case ROW:
36162 			case ROWS:
36163 			case XOR:
36164 			case ALWAYS:
36165 			case ROLE:
36166 			case START:
36167 			case ALGORITHM:
36168 			case AUTO:
36169 			case BLOCKERS:
36170 			case CLUSTERED:
36171 			case NONCLUSTERED:
36172 			case COLUMNSTORE:
36173 			case CONTENT:
36174 			case CONVERT:
36175 			case YEARS:
36176 			case MONTHS:
36177 			case WEEKS:
36178 			case DAYS:
36179 			case MINUTES:
36180 			case DENY:
36181 			case DETERMINISTIC:
36182 			case DISTRIBUTION:
36183 			case DOCUMENT:
36184 			case DURABILITY:
36185 			case ENCRYPTED:
36186 			case FILESTREAM:
36187 			case FILETABLE:
36188 			case FILLFACTOR:
36189 			case FOLLOWING:
36190 			case HASH:
36191 			case HEAP:
36192 			case INBOUND:
36193 			case OUTBOUND:
36194 			case UNBOUNDED:
36195 			case INFINITE:
36196 			case LOGIN:
36197 			case MASKED:
36198 			case MAXDOP:
36199 			case MOVE:
36200 			case NOCHECK:
36201 			case OBJECT:
36202 			case ONLINE:
36203 			case OVER:
36204 			case PAGE:
36205 			case PAUSED:
36206 			case PERIOD:
36207 			case PERSISTED:
36208 			case PRECEDING:
36209 			case RANDOMIZED:
36210 			case RANGE:
36211 			case REBUILD:
36212 			case REPLICATE:
36213 			case REPLICATION:
36214 			case RESUMABLE:
36215 			case ROWGUIDCOL:
36216 			case SAVE:
36217 			case SELF:
36218 			case SPARSE:
36219 			case SWITCH:
36220 			case TRAN:
36221 			case TRANCOUNT:
36222 			case CONTROL:
36223 			case CONCAT:
36224 			case TAKE:
36225 			case OWNERSHIP:
36226 			case DEFINITION:
36227 			case APPLICATION:
36228 			case ASSEMBLY:
36229 			case SYMMETRIC:
36230 			case ASYMMETRIC:
36231 			case SERVER:
36232 			case RECEIVE:
36233 			case CHANGE:
36234 			case TRACE:
36235 			case TRACKING:
36236 			case RESOURCES:
36237 			case SETTINGS:
36238 			case STATE:
36239 			case AVAILABILITY:
36240 			case CREDENTIAL:
36241 			case ENDPOINT:
36242 			case EVENT:
36243 			case NOTIFICATION:
36244 			case LINKED:
36245 			case AUDIT:
36246 			case DDL:
36247 			case XML:
36248 			case IMPERSONATE:
36249 			case SECURABLES:
36250 			case AUTHENTICATE:
36251 			case EXTERNAL:
36252 			case ACCESS:
36253 			case ADMINISTER:
36254 			case BULK:
36255 			case OPERATIONS:
36256 			case UNSAFE:
36257 			case SHUTDOWN:
36258 			case SCOPED:
36259 			case CONFIGURATION:
36260 			case DATASPACE:
36261 			case SERVICE:
36262 			case CERTIFICATE:
36263 			case CONTRACT:
36264 			case ENCRYPTION:
36265 			case MASTER:
36266 			case DATA:
36267 			case SOURCE:
36268 			case FILE:
36269 			case FORMAT:
36270 			case LIBRARY:
36271 			case FULLTEXT:
36272 			case MASK:
36273 			case UNMASK:
36274 			case MESSAGE:
36275 			case REMOTE:
36276 			case BINDING:
36277 			case ROUTE:
36278 			case SECURITY:
36279 			case POLICY:
36280 			case AGGREGATE:
36281 			case QUEUE:
36282 			case RULE:
36283 			case SYNONYM:
36284 			case COLLECTION:
36285 			case SCRIPT:
36286 			case KILL:
36287 			case BACKUP:
36288 			case LOG:
36289 			case SHOWPLAN:
36290 			case SUBSCRIBE:
36291 			case QUERY:
36292 			case NOTIFICATIONS:
36293 			case CHECKPOINT:
36294 			case SEQUENCE:
36295 			case ABORT_AFTER_WAIT:
36296 			case ALLOW_PAGE_LOCKS:
36297 			case ALLOW_ROW_LOCKS:
36298 			case ALL_SPARSE_COLUMNS:
36299 			case BUCKET_COUNT:
36300 			case COLUMNSTORE_ARCHIVE:
36301 			case COLUMN_ENCRYPTION_KEY:
36302 			case COLUMN_SET:
36303 			case COMPRESSION_DELAY:
36304 			case DATABASE_DEAULT:
36305 			case DATA_COMPRESSION:
36306 			case DATA_CONSISTENCY_CHECK:
36307 			case ENCRYPTION_TYPE:
36308 			case SYSTEM_TIME:
36309 			case SYSTEM_VERSIONING:
36310 			case TEXTIMAGE_ON:
36311 			case WAIT_AT_LOW_PRIORITY:
36312 			case STATISTICS_INCREMENTAL:
36313 			case STATISTICS_NORECOMPUTE:
36314 			case ROUND_ROBIN:
36315 			case SCHEMA_AND_DATA:
36316 			case SCHEMA_ONLY:
36317 			case SORT_IN_TEMPDB:
36318 			case IGNORE_DUP_KEY:
36319 			case IMPLICIT_TRANSACTIONS:
36320 			case MAX_DURATION:
36321 			case MEMORY_OPTIMIZED:
36322 			case MIGRATION_STATE:
36323 			case PAD_INDEX:
36324 			case REMOTE_DATA_ARCHIVE:
36325 			case FILESTREAM_ON:
36326 			case FILETABLE_COLLATE_FILENAME:
36327 			case FILETABLE_DIRECTORY:
36328 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
36329 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
36330 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
36331 			case FILTER_PREDICATE:
36332 			case HISTORY_RETENTION_PERIOD:
36333 			case HISTORY_TABLE:
36334 			case LOCK_ESCALATION:
36335 			case DROP_EXISTING:
36336 			case ROW_NUMBER:
36337 			case FIRST:
36338 			case DATETIME2:
36339 			case OUTPUT:
36340 			case INSERTED:
36341 			case DELETED:
36342 			case FILENAME:
36343 			case SIZE:
36344 			case MAXSIZE:
36345 			case FILEGROWTH:
36346 			case UNLIMITED:
36347 			case KB:
36348 			case MB:
36349 			case GB:
36350 			case TB:
36351 			case CONTAINS:
36352 			case MEMORY_OPTIMIZED_DATA:
36353 			case FILEGROUP:
36354 			case NON_TRANSACTED_ACCESS:
36355 			case DB_CHAINING:
36356 			case TRUSTWORTHY:
36357 			case FORWARD_ONLY:
36358 			case KEYSET:
36359 			case FAST_FORWARD:
36360 			case SCROLL_LOCKS:
36361 			case OPTIMISTIC:
36362 			case TYPE_WARNING:
36363 			case SCHEMABINDING:
36364 			case CALLER:
36365 			case OWNER:
36366 			case SNAPSHOT:
36367 			case REPEATABLE:
36368 			case SERIALIZABLE:
36369 			case NATIVE_COMPILATION:
36370 			case VIEW_METADATA:
36371 			case INSTEAD:
36372 			case APPEND:
36373 			case INCREMENT:
36374 			case CACHE:
36375 			case MINVALUE:
36376 			case MAXVALUE:
36377 			case RESTART:
36378 			case LOB_COMPACTION:
36379 			case COMPRESS_ALL_ROW_GROUPS:
36380 			case REORGANIZE:
36381 			case RESUME:
36382 			case PAUSE:
36383 			case ABORT:
36384 			case ACCELERATED_DATABASE_RECOVERY:
36385 			case PERSISTENT_VERSION_STORE_FILEGROUP:
36386 			case IMMEDIATE:
36387 			case NO_WAIT:
36388 			case TARGET_RECOVERY_TIME:
36389 			case SECONDS:
36390 			case HONOR_BROKER_PRIORITY:
36391 			case ERROR_BROKER_CONVERSATIONS:
36392 			case NEW_BROKER:
36393 			case DISABLE_BROKER:
36394 			case ENABLE_BROKER:
36395 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
36396 			case READ_COMMITTED_SNAPSHOT:
36397 			case ALLOW_SNAPSHOT_ISOLATION:
36398 			case RECURSIVE_TRIGGERS:
36399 			case QUOTED_IDENTIFIER:
36400 			case NUMERIC_ROUNDABORT:
36401 			case CONCAT_NULL_YIELDS_NULL:
36402 			case COMPATIBILITY_LEVEL:
36403 			case ARITHABORT:
36404 			case ANSI_WARNINGS:
36405 			case ANSI_PADDING:
36406 			case ANSI_NULLS:
36407 			case ANSI_NULL_DEFAULT:
36408 			case PAGE_VERIFY:
36409 			case CHECKSUM:
36410 			case TORN_PAGE_DETECTION:
36411 			case BULK_LOGGED:
36412 			case RECOVERY:
36413 			case TOTAL_EXECUTION_CPU_TIME_MS:
36414 			case TOTAL_COMPILE_CPU_TIME_MS:
36415 			case STALE_CAPTURE_POLICY_THRESHOLD:
36416 			case EXECUTION_COUNT:
36417 			case QUERY_CAPTURE_POLICY:
36418 			case WAIT_STATS_CAPTURE_MODE:
36419 			case MAX_PLANS_PER_QUERY:
36420 			case QUERY_CAPTURE_MODE:
36421 			case SIZE_BASED_CLEANUP_MODE:
36422 			case INTERVAL_LENGTH_MINUTES:
36423 			case MAX_STORAGE_SIZE_MB:
36424 			case DATA_FLUSH_INTERVAL_SECONDS:
36425 			case CLEANUP_POLICY:
36426 			case CUSTOM:
36427 			case STALE_QUERY_THRESHOLD_DAYS:
36428 			case OPERATION_MODE:
36429 			case QUERY_STORE:
36430 			case CURSOR_DEFAULT:
36431 			case GLOBAL:
36432 			case CURSOR_CLOSE_ON_COMMIT:
36433 			case HOURS:
36434 			case CHANGE_RETENTION:
36435 			case AUTO_CLEANUP:
36436 			case CHANGE_TRACKING:
36437 			case AUTOMATIC_TUNING:
36438 			case FORCE_LAST_GOOD_PLAN:
36439 			case AUTO_UPDATE_STATISTICS_ASYNC:
36440 			case AUTO_UPDATE_STATISTICS:
36441 			case AUTO_SHRINK:
36442 			case AUTO_CREATE_STATISTICS:
36443 			case INCREMENTAL:
36444 			case AUTO_CLOSE:
36445 			case DATA_RETENTION:
36446 			case TEMPORAL_HISTORY_RETENTION:
36447 			case EDITION:
36448 			case MIXED_PAGE_ALLOCATION:
36449 			case DISABLED:
36450 			case ALLOWED:
36451 			case HADR:
36452 			case MULTI_USER:
36453 			case RESTRICTED_USER:
36454 			case SINGLE_USER:
36455 			case OFFLINE:
36456 			case EMERGENCY:
36457 			case SUSPEND:
36458 			case DATE_CORRELATION_OPTIMIZATION:
36459 			case ELASTIC_POOL:
36460 			case SERVICE_OBJECTIVE:
36461 			case DATABASE_NAME:
36462 			case ALLOW_CONNECTIONS:
36463 			case GEO:
36464 			case NAMED:
36465 			case DATEFIRST:
36466 			case BACKUP_STORAGE_REDUNDANCY:
36467 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
36468 			case SECONDARY:
36469 			case FAILOVER:
36470 			case DEFAULT_FULLTEXT_LANGUAGE:
36471 			case DEFAULT_LANGUAGE:
36472 			case INLINE:
36473 			case NESTED_TRIGGERS:
36474 			case TRANSFORM_NOISE_WORDS:
36475 			case TWO_DIGIT_YEAR_CUTOFF:
36476 			case PERSISTENT_LOG_BUFFER:
36477 			case DIRECTORY_NAME:
36478 			case DATEFORMAT:
36479 			case DELAYED_DURABILITY:
36480 			case AUTHORIZATION:
36481 			case TRANSFER:
36482 			case PROVIDER:
36483 			case SEARCH:
36484 			case MEMBER:
36485 			case OPENJSON:
36486 			case OPENROWSET:
36487 			case IDENTIFIER_:
36488 			case DELIMITED_IDENTIFIER_:
36489 			case STRING_:
36490 			case NUMBER_:
36491 			case HEX_DIGIT_:
36492 			case BIT_NUM_:
36493 			case NCHAR_TEXT:
36494 				enterOuterAlt(_localctx, 1);
36495 				{
36496 				setState(5088);
36497 				expr(0);
36498 				}
36499 				break;
36500 			case DEFAULT:
36501 				enterOuterAlt(_localctx, 2);
36502 				{
36503 				setState(5089);
36504 				match(DEFAULT);
36505 				}
36506 				break;
36507 			default:
36508 				throw new NoViableAltException(this);
36509 			}
36510 		}
36511 		catch (RecognitionException re) {
36512 			_localctx.exception = re;
36513 			_errHandler.reportError(this, re);
36514 			_errHandler.recover(this, re);
36515 		}
36516 		finally {
36517 			exitRule();
36518 		}
36519 		return _localctx;
36520 	}
36521 
36522 	public static class DeleteContext extends ParserRuleContext {
36523 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
36524 		public SingleTableClauseContext singleTableClause() {
36525 			return getRuleContext(SingleTableClauseContext.class,0);
36526 		}
36527 		public MultipleTablesClauseContext multipleTablesClause() {
36528 			return getRuleContext(MultipleTablesClauseContext.class,0);
36529 		}
36530 		public WithClauseContext withClause() {
36531 			return getRuleContext(WithClauseContext.class,0);
36532 		}
36533 		public TopContext top() {
36534 			return getRuleContext(TopContext.class,0);
36535 		}
36536 		public OutputClauseContext outputClause() {
36537 			return getRuleContext(OutputClauseContext.class,0);
36538 		}
36539 		public WhereClauseContext whereClause() {
36540 			return getRuleContext(WhereClauseContext.class,0);
36541 		}
36542 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
36543 		public QueryHintContext queryHint() {
36544 			return getRuleContext(QueryHintContext.class,0);
36545 		}
36546 		public DeleteContext(ParserRuleContext parent, int invokingState) {
36547 			super(parent, invokingState);
36548 		}
36549 		@Override public int getRuleIndex() { return RULE_delete; }
36550 		@Override
36551 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36552 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDelete(this);
36553 			else return visitor.visitChildren(this);
36554 		}
36555 	}
36556 
36557 	public final DeleteContext delete() throws RecognitionException {
36558 		DeleteContext _localctx = new DeleteContext(_ctx, getState());
36559 		enterRule(_localctx, 706, RULE_delete);
36560 		int _la;
36561 		try {
36562 			enterOuterAlt(_localctx, 1);
36563 			{
36564 			setState(5093);
36565 			_errHandler.sync(this);
36566 			_la = _input.LA(1);
36567 			if (_la==WITH) {
36568 				{
36569 				setState(5092);
36570 				withClause();
36571 				}
36572 			}
36573 
36574 			setState(5095);
36575 			match(DELETE);
36576 			setState(5097);
36577 			_errHandler.sync(this);
36578 			switch ( getInterpreter().adaptivePredict(_input,559,_ctx) ) {
36579 			case 1:
36580 				{
36581 				setState(5096);
36582 				top();
36583 				}
36584 				break;
36585 			}
36586 			setState(5101);
36587 			_errHandler.sync(this);
36588 			switch ( getInterpreter().adaptivePredict(_input,560,_ctx) ) {
36589 			case 1:
36590 				{
36591 				setState(5099);
36592 				singleTableClause();
36593 				}
36594 				break;
36595 			case 2:
36596 				{
36597 				setState(5100);
36598 				multipleTablesClause();
36599 				}
36600 				break;
36601 			}
36602 			setState(5104);
36603 			_errHandler.sync(this);
36604 			_la = _input.LA(1);
36605 			if (_la==OUTPUT) {
36606 				{
36607 				setState(5103);
36608 				outputClause();
36609 				}
36610 			}
36611 
36612 			setState(5107);
36613 			_errHandler.sync(this);
36614 			_la = _input.LA(1);
36615 			if (_la==WHERE) {
36616 				{
36617 				setState(5106);
36618 				whereClause();
36619 				}
36620 			}
36621 
36622 			setState(5111);
36623 			_errHandler.sync(this);
36624 			_la = _input.LA(1);
36625 			if (_la==OPTION) {
36626 				{
36627 				setState(5109);
36628 				match(OPTION);
36629 				setState(5110);
36630 				queryHint();
36631 				}
36632 			}
36633 
36634 			}
36635 		}
36636 		catch (RecognitionException re) {
36637 			_localctx.exception = re;
36638 			_errHandler.reportError(this, re);
36639 			_errHandler.recover(this, re);
36640 		}
36641 		finally {
36642 			exitRule();
36643 		}
36644 		return _localctx;
36645 	}
36646 
36647 	public static class SingleTableClauseContext extends ParserRuleContext {
36648 		public TableNameContext tableName() {
36649 			return getRuleContext(TableNameContext.class,0);
36650 		}
36651 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
36652 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
36653 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
36654 		public AliasContext alias() {
36655 			return getRuleContext(AliasContext.class,0);
36656 		}
36657 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
36658 		public SingleTableClauseContext(ParserRuleContext parent, int invokingState) {
36659 			super(parent, invokingState);
36660 		}
36661 		@Override public int getRuleIndex() { return RULE_singleTableClause; }
36662 		@Override
36663 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36664 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSingleTableClause(this);
36665 			else return visitor.visitChildren(this);
36666 		}
36667 	}
36668 
36669 	public final SingleTableClauseContext singleTableClause() throws RecognitionException {
36670 		SingleTableClauseContext _localctx = new SingleTableClauseContext(_ctx, getState());
36671 		enterRule(_localctx, 708, RULE_singleTableClause);
36672 		int _la;
36673 		try {
36674 			enterOuterAlt(_localctx, 1);
36675 			{
36676 			setState(5114);
36677 			_errHandler.sync(this);
36678 			_la = _input.LA(1);
36679 			if (_la==FROM) {
36680 				{
36681 				setState(5113);
36682 				match(FROM);
36683 				}
36684 			}
36685 
36686 			setState(5117);
36687 			_errHandler.sync(this);
36688 			_la = _input.LA(1);
36689 			if (_la==LP_) {
36690 				{
36691 				setState(5116);
36692 				match(LP_);
36693 				}
36694 			}
36695 
36696 			setState(5119);
36697 			tableName();
36698 			setState(5121);
36699 			_errHandler.sync(this);
36700 			_la = _input.LA(1);
36701 			if (_la==RP_) {
36702 				{
36703 				setState(5120);
36704 				match(RP_);
36705 				}
36706 			}
36707 
36708 			setState(5127);
36709 			_errHandler.sync(this);
36710 			switch ( getInterpreter().adaptivePredict(_input,568,_ctx) ) {
36711 			case 1:
36712 				{
36713 				setState(5124);
36714 				_errHandler.sync(this);
36715 				_la = _input.LA(1);
36716 				if (_la==AS) {
36717 					{
36718 					setState(5123);
36719 					match(AS);
36720 					}
36721 				}
36722 
36723 				setState(5126);
36724 				alias();
36725 				}
36726 				break;
36727 			}
36728 			}
36729 		}
36730 		catch (RecognitionException re) {
36731 			_localctx.exception = re;
36732 			_errHandler.reportError(this, re);
36733 			_errHandler.recover(this, re);
36734 		}
36735 		finally {
36736 			exitRule();
36737 		}
36738 		return _localctx;
36739 	}
36740 
36741 	public static class MultipleTablesClauseContext extends ParserRuleContext {
36742 		public MultipleTableNamesContext multipleTableNames() {
36743 			return getRuleContext(MultipleTableNamesContext.class,0);
36744 		}
36745 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
36746 		public TableReferencesContext tableReferences() {
36747 			return getRuleContext(TableReferencesContext.class,0);
36748 		}
36749 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
36750 		public MultipleTablesClauseContext(ParserRuleContext parent, int invokingState) {
36751 			super(parent, invokingState);
36752 		}
36753 		@Override public int getRuleIndex() { return RULE_multipleTablesClause; }
36754 		@Override
36755 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36756 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMultipleTablesClause(this);
36757 			else return visitor.visitChildren(this);
36758 		}
36759 	}
36760 
36761 	public final MultipleTablesClauseContext multipleTablesClause() throws RecognitionException {
36762 		MultipleTablesClauseContext _localctx = new MultipleTablesClauseContext(_ctx, getState());
36763 		enterRule(_localctx, 710, RULE_multipleTablesClause);
36764 		try {
36765 			setState(5138);
36766 			_errHandler.sync(this);
36767 			switch (_input.LA(1)) {
36768 			case TRUNCATE:
36769 			case SCHEMA:
36770 			case COLUMNS:
36771 			case PRECISION:
36772 			case FUNCTION:
36773 			case TRIGGER:
36774 			case CAST:
36775 			case SUBSTRING:
36776 			case OFF:
36777 			case GROUP:
36778 			case LIMIT:
36779 			case OFFSET:
36780 			case SAVEPOINT:
36781 			case BOOLEAN:
36782 			case ARRAY:
36783 			case DATE:
36784 			case LOCALTIME:
36785 			case LOCALTIMESTAMP:
36786 			case QUARTER:
36787 			case MONTH:
36788 			case WEEK:
36789 			case DAY:
36790 			case SECOND:
36791 			case MICROSECOND:
36792 			case MAX:
36793 			case MIN:
36794 			case SUM:
36795 			case COUNT:
36796 			case AVG:
36797 			case ENABLE:
36798 			case DISABLE:
36799 			case INSTANCE:
36800 			case DO:
36801 			case DEFINER:
36802 			case SQL:
36803 			case CASCADED:
36804 			case LOCAL:
36805 			case NEXT:
36806 			case NAME:
36807 			case INTEGER:
36808 			case TYPE:
36809 			case TEXT:
36810 			case VIEWS:
36811 			case READ_ONLY:
36812 			case DATABASE:
36813 			case RETURNS:
36814 			case DATEPART:
36815 			case PASSWORD:
36816 			case BINARY:
36817 			case HIDDEN_:
36818 			case MOD:
36819 			case PARTITION:
36820 			case PARTITIONS:
36821 			case TOP:
36822 			case ROW:
36823 			case ROWS:
36824 			case XOR:
36825 			case ALWAYS:
36826 			case ROLE:
36827 			case START:
36828 			case ALGORITHM:
36829 			case AUTO:
36830 			case BLOCKERS:
36831 			case CLUSTERED:
36832 			case NONCLUSTERED:
36833 			case COLUMNSTORE:
36834 			case CONTENT:
36835 			case YEARS:
36836 			case MONTHS:
36837 			case WEEKS:
36838 			case DAYS:
36839 			case MINUTES:
36840 			case DENY:
36841 			case DETERMINISTIC:
36842 			case DISTRIBUTION:
36843 			case DOCUMENT:
36844 			case DURABILITY:
36845 			case ENCRYPTED:
36846 			case FILESTREAM:
36847 			case FILETABLE:
36848 			case FILLFACTOR:
36849 			case FOLLOWING:
36850 			case HASH:
36851 			case HEAP:
36852 			case INBOUND:
36853 			case OUTBOUND:
36854 			case UNBOUNDED:
36855 			case INFINITE:
36856 			case LOGIN:
36857 			case MASKED:
36858 			case MAXDOP:
36859 			case MOVE:
36860 			case NOCHECK:
36861 			case OBJECT:
36862 			case ONLINE:
36863 			case OVER:
36864 			case PAGE:
36865 			case PAUSED:
36866 			case PERIOD:
36867 			case PERSISTED:
36868 			case PRECEDING:
36869 			case RANDOMIZED:
36870 			case RANGE:
36871 			case REBUILD:
36872 			case REPLICATE:
36873 			case REPLICATION:
36874 			case RESUMABLE:
36875 			case ROWGUIDCOL:
36876 			case SAVE:
36877 			case SELF:
36878 			case SPARSE:
36879 			case SWITCH:
36880 			case TRAN:
36881 			case TRANCOUNT:
36882 			case CONTROL:
36883 			case CONCAT:
36884 			case TAKE:
36885 			case OWNERSHIP:
36886 			case DEFINITION:
36887 			case APPLICATION:
36888 			case ASSEMBLY:
36889 			case SYMMETRIC:
36890 			case ASYMMETRIC:
36891 			case SERVER:
36892 			case RECEIVE:
36893 			case CHANGE:
36894 			case TRACE:
36895 			case TRACKING:
36896 			case RESOURCES:
36897 			case SETTINGS:
36898 			case STATE:
36899 			case AVAILABILITY:
36900 			case CREDENTIAL:
36901 			case ENDPOINT:
36902 			case EVENT:
36903 			case NOTIFICATION:
36904 			case LINKED:
36905 			case AUDIT:
36906 			case DDL:
36907 			case XML:
36908 			case IMPERSONATE:
36909 			case SECURABLES:
36910 			case AUTHENTICATE:
36911 			case EXTERNAL:
36912 			case ACCESS:
36913 			case ADMINISTER:
36914 			case BULK:
36915 			case OPERATIONS:
36916 			case UNSAFE:
36917 			case SHUTDOWN:
36918 			case SCOPED:
36919 			case CONFIGURATION:
36920 			case DATASPACE:
36921 			case SERVICE:
36922 			case CERTIFICATE:
36923 			case CONTRACT:
36924 			case ENCRYPTION:
36925 			case MASTER:
36926 			case DATA:
36927 			case SOURCE:
36928 			case FILE:
36929 			case FORMAT:
36930 			case LIBRARY:
36931 			case FULLTEXT:
36932 			case MASK:
36933 			case UNMASK:
36934 			case MESSAGE:
36935 			case REMOTE:
36936 			case BINDING:
36937 			case ROUTE:
36938 			case SECURITY:
36939 			case POLICY:
36940 			case AGGREGATE:
36941 			case QUEUE:
36942 			case RULE:
36943 			case SYNONYM:
36944 			case COLLECTION:
36945 			case SCRIPT:
36946 			case KILL:
36947 			case BACKUP:
36948 			case LOG:
36949 			case SHOWPLAN:
36950 			case SUBSCRIBE:
36951 			case QUERY:
36952 			case NOTIFICATIONS:
36953 			case CHECKPOINT:
36954 			case SEQUENCE:
36955 			case ABORT_AFTER_WAIT:
36956 			case ALLOW_PAGE_LOCKS:
36957 			case ALLOW_ROW_LOCKS:
36958 			case ALL_SPARSE_COLUMNS:
36959 			case BUCKET_COUNT:
36960 			case COLUMNSTORE_ARCHIVE:
36961 			case COLUMN_ENCRYPTION_KEY:
36962 			case COLUMN_SET:
36963 			case COMPRESSION_DELAY:
36964 			case DATABASE_DEAULT:
36965 			case DATA_COMPRESSION:
36966 			case DATA_CONSISTENCY_CHECK:
36967 			case ENCRYPTION_TYPE:
36968 			case SYSTEM_TIME:
36969 			case SYSTEM_VERSIONING:
36970 			case TEXTIMAGE_ON:
36971 			case WAIT_AT_LOW_PRIORITY:
36972 			case STATISTICS_INCREMENTAL:
36973 			case STATISTICS_NORECOMPUTE:
36974 			case ROUND_ROBIN:
36975 			case SCHEMA_AND_DATA:
36976 			case SCHEMA_ONLY:
36977 			case SORT_IN_TEMPDB:
36978 			case IGNORE_DUP_KEY:
36979 			case IMPLICIT_TRANSACTIONS:
36980 			case MAX_DURATION:
36981 			case MEMORY_OPTIMIZED:
36982 			case MIGRATION_STATE:
36983 			case PAD_INDEX:
36984 			case REMOTE_DATA_ARCHIVE:
36985 			case FILESTREAM_ON:
36986 			case FILETABLE_COLLATE_FILENAME:
36987 			case FILETABLE_DIRECTORY:
36988 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
36989 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
36990 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
36991 			case FILTER_PREDICATE:
36992 			case HISTORY_RETENTION_PERIOD:
36993 			case HISTORY_TABLE:
36994 			case LOCK_ESCALATION:
36995 			case DROP_EXISTING:
36996 			case ROW_NUMBER:
36997 			case FIRST:
36998 			case DATETIME2:
36999 			case OUTPUT:
37000 			case INSERTED:
37001 			case DELETED:
37002 			case FILENAME:
37003 			case SIZE:
37004 			case MAXSIZE:
37005 			case FILEGROWTH:
37006 			case UNLIMITED:
37007 			case KB:
37008 			case MB:
37009 			case GB:
37010 			case TB:
37011 			case CONTAINS:
37012 			case MEMORY_OPTIMIZED_DATA:
37013 			case FILEGROUP:
37014 			case NON_TRANSACTED_ACCESS:
37015 			case DB_CHAINING:
37016 			case TRUSTWORTHY:
37017 			case FORWARD_ONLY:
37018 			case KEYSET:
37019 			case FAST_FORWARD:
37020 			case SCROLL_LOCKS:
37021 			case OPTIMISTIC:
37022 			case TYPE_WARNING:
37023 			case SCHEMABINDING:
37024 			case CALLER:
37025 			case OWNER:
37026 			case SNAPSHOT:
37027 			case REPEATABLE:
37028 			case SERIALIZABLE:
37029 			case NATIVE_COMPILATION:
37030 			case VIEW_METADATA:
37031 			case INSTEAD:
37032 			case APPEND:
37033 			case INCREMENT:
37034 			case CACHE:
37035 			case MINVALUE:
37036 			case MAXVALUE:
37037 			case RESTART:
37038 			case LOB_COMPACTION:
37039 			case COMPRESS_ALL_ROW_GROUPS:
37040 			case REORGANIZE:
37041 			case RESUME:
37042 			case PAUSE:
37043 			case ABORT:
37044 			case ACCELERATED_DATABASE_RECOVERY:
37045 			case PERSISTENT_VERSION_STORE_FILEGROUP:
37046 			case IMMEDIATE:
37047 			case NO_WAIT:
37048 			case TARGET_RECOVERY_TIME:
37049 			case SECONDS:
37050 			case HONOR_BROKER_PRIORITY:
37051 			case ERROR_BROKER_CONVERSATIONS:
37052 			case NEW_BROKER:
37053 			case DISABLE_BROKER:
37054 			case ENABLE_BROKER:
37055 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
37056 			case READ_COMMITTED_SNAPSHOT:
37057 			case ALLOW_SNAPSHOT_ISOLATION:
37058 			case RECURSIVE_TRIGGERS:
37059 			case QUOTED_IDENTIFIER:
37060 			case NUMERIC_ROUNDABORT:
37061 			case CONCAT_NULL_YIELDS_NULL:
37062 			case COMPATIBILITY_LEVEL:
37063 			case ARITHABORT:
37064 			case ANSI_WARNINGS:
37065 			case ANSI_PADDING:
37066 			case ANSI_NULLS:
37067 			case ANSI_NULL_DEFAULT:
37068 			case PAGE_VERIFY:
37069 			case CHECKSUM:
37070 			case TORN_PAGE_DETECTION:
37071 			case BULK_LOGGED:
37072 			case RECOVERY:
37073 			case TOTAL_EXECUTION_CPU_TIME_MS:
37074 			case TOTAL_COMPILE_CPU_TIME_MS:
37075 			case STALE_CAPTURE_POLICY_THRESHOLD:
37076 			case EXECUTION_COUNT:
37077 			case QUERY_CAPTURE_POLICY:
37078 			case WAIT_STATS_CAPTURE_MODE:
37079 			case MAX_PLANS_PER_QUERY:
37080 			case QUERY_CAPTURE_MODE:
37081 			case SIZE_BASED_CLEANUP_MODE:
37082 			case INTERVAL_LENGTH_MINUTES:
37083 			case MAX_STORAGE_SIZE_MB:
37084 			case DATA_FLUSH_INTERVAL_SECONDS:
37085 			case CLEANUP_POLICY:
37086 			case CUSTOM:
37087 			case STALE_QUERY_THRESHOLD_DAYS:
37088 			case OPERATION_MODE:
37089 			case QUERY_STORE:
37090 			case CURSOR_DEFAULT:
37091 			case GLOBAL:
37092 			case CURSOR_CLOSE_ON_COMMIT:
37093 			case HOURS:
37094 			case CHANGE_RETENTION:
37095 			case AUTO_CLEANUP:
37096 			case CHANGE_TRACKING:
37097 			case AUTOMATIC_TUNING:
37098 			case FORCE_LAST_GOOD_PLAN:
37099 			case AUTO_UPDATE_STATISTICS_ASYNC:
37100 			case AUTO_UPDATE_STATISTICS:
37101 			case AUTO_SHRINK:
37102 			case AUTO_CREATE_STATISTICS:
37103 			case INCREMENTAL:
37104 			case AUTO_CLOSE:
37105 			case DATA_RETENTION:
37106 			case TEMPORAL_HISTORY_RETENTION:
37107 			case EDITION:
37108 			case MIXED_PAGE_ALLOCATION:
37109 			case DISABLED:
37110 			case ALLOWED:
37111 			case HADR:
37112 			case MULTI_USER:
37113 			case RESTRICTED_USER:
37114 			case SINGLE_USER:
37115 			case OFFLINE:
37116 			case EMERGENCY:
37117 			case SUSPEND:
37118 			case DATE_CORRELATION_OPTIMIZATION:
37119 			case ELASTIC_POOL:
37120 			case SERVICE_OBJECTIVE:
37121 			case DATABASE_NAME:
37122 			case ALLOW_CONNECTIONS:
37123 			case GEO:
37124 			case NAMED:
37125 			case DATEFIRST:
37126 			case BACKUP_STORAGE_REDUNDANCY:
37127 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
37128 			case SECONDARY:
37129 			case FAILOVER:
37130 			case DEFAULT_FULLTEXT_LANGUAGE:
37131 			case DEFAULT_LANGUAGE:
37132 			case INLINE:
37133 			case NESTED_TRIGGERS:
37134 			case TRANSFORM_NOISE_WORDS:
37135 			case TWO_DIGIT_YEAR_CUTOFF:
37136 			case PERSISTENT_LOG_BUFFER:
37137 			case DIRECTORY_NAME:
37138 			case DATEFORMAT:
37139 			case DELAYED_DURABILITY:
37140 			case AUTHORIZATION:
37141 			case TRANSFER:
37142 			case PROVIDER:
37143 			case SEARCH:
37144 			case MEMBER:
37145 			case IDENTIFIER_:
37146 			case DELIMITED_IDENTIFIER_:
37147 				enterOuterAlt(_localctx, 1);
37148 				{
37149 				setState(5129);
37150 				multipleTableNames();
37151 				setState(5130);
37152 				match(FROM);
37153 				setState(5131);
37154 				tableReferences();
37155 				}
37156 				break;
37157 			case FROM:
37158 				enterOuterAlt(_localctx, 2);
37159 				{
37160 				setState(5133);
37161 				match(FROM);
37162 				setState(5134);
37163 				multipleTableNames();
37164 				setState(5135);
37165 				match(USING);
37166 				setState(5136);
37167 				tableReferences();
37168 				}
37169 				break;
37170 			default:
37171 				throw new NoViableAltException(this);
37172 			}
37173 		}
37174 		catch (RecognitionException re) {
37175 			_localctx.exception = re;
37176 			_errHandler.reportError(this, re);
37177 			_errHandler.recover(this, re);
37178 		}
37179 		finally {
37180 			exitRule();
37181 		}
37182 		return _localctx;
37183 	}
37184 
37185 	public static class MultipleTableNamesContext extends ParserRuleContext {
37186 		public List<TableNameContext> tableName() {
37187 			return getRuleContexts(TableNameContext.class);
37188 		}
37189 		public TableNameContext tableName(int i) {
37190 			return getRuleContext(TableNameContext.class,i);
37191 		}
37192 		public List<TerminalNode> DOT_ASTERISK_() { return getTokens(SQLServerStatementParser.DOT_ASTERISK_); }
37193 		public TerminalNode DOT_ASTERISK_(int i) {
37194 			return getToken(SQLServerStatementParser.DOT_ASTERISK_, i);
37195 		}
37196 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
37197 		public TerminalNode COMMA_(int i) {
37198 			return getToken(SQLServerStatementParser.COMMA_, i);
37199 		}
37200 		public MultipleTableNamesContext(ParserRuleContext parent, int invokingState) {
37201 			super(parent, invokingState);
37202 		}
37203 		@Override public int getRuleIndex() { return RULE_multipleTableNames; }
37204 		@Override
37205 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37206 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMultipleTableNames(this);
37207 			else return visitor.visitChildren(this);
37208 		}
37209 	}
37210 
37211 	public final MultipleTableNamesContext multipleTableNames() throws RecognitionException {
37212 		MultipleTableNamesContext _localctx = new MultipleTableNamesContext(_ctx, getState());
37213 		enterRule(_localctx, 712, RULE_multipleTableNames);
37214 		int _la;
37215 		try {
37216 			enterOuterAlt(_localctx, 1);
37217 			{
37218 			setState(5140);
37219 			tableName();
37220 			setState(5142);
37221 			_errHandler.sync(this);
37222 			_la = _input.LA(1);
37223 			if (_la==DOT_ASTERISK_) {
37224 				{
37225 				setState(5141);
37226 				match(DOT_ASTERISK_);
37227 				}
37228 			}
37229 
37230 			setState(5151);
37231 			_errHandler.sync(this);
37232 			_la = _input.LA(1);
37233 			while (_la==COMMA_) {
37234 				{
37235 				{
37236 				setState(5144);
37237 				match(COMMA_);
37238 				setState(5145);
37239 				tableName();
37240 				setState(5147);
37241 				_errHandler.sync(this);
37242 				_la = _input.LA(1);
37243 				if (_la==DOT_ASTERISK_) {
37244 					{
37245 					setState(5146);
37246 					match(DOT_ASTERISK_);
37247 					}
37248 				}
37249 
37250 				}
37251 				}
37252 				setState(5153);
37253 				_errHandler.sync(this);
37254 				_la = _input.LA(1);
37255 			}
37256 			}
37257 		}
37258 		catch (RecognitionException re) {
37259 			_localctx.exception = re;
37260 			_errHandler.reportError(this, re);
37261 			_errHandler.recover(this, re);
37262 		}
37263 		finally {
37264 			exitRule();
37265 		}
37266 		return _localctx;
37267 	}
37268 
37269 	public static class SelectContext extends ParserRuleContext {
37270 		public AggregationClauseContext aggregationClause() {
37271 			return getRuleContext(AggregationClauseContext.class,0);
37272 		}
37273 		public SelectContext(ParserRuleContext parent, int invokingState) {
37274 			super(parent, invokingState);
37275 		}
37276 		@Override public int getRuleIndex() { return RULE_select; }
37277 		@Override
37278 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37279 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelect(this);
37280 			else return visitor.visitChildren(this);
37281 		}
37282 	}
37283 
37284 	public final SelectContext select() throws RecognitionException {
37285 		SelectContext _localctx = new SelectContext(_ctx, getState());
37286 		enterRule(_localctx, 714, RULE_select);
37287 		try {
37288 			enterOuterAlt(_localctx, 1);
37289 			{
37290 			setState(5154);
37291 			aggregationClause();
37292 			}
37293 		}
37294 		catch (RecognitionException re) {
37295 			_localctx.exception = re;
37296 			_errHandler.reportError(this, re);
37297 			_errHandler.recover(this, re);
37298 		}
37299 		finally {
37300 			exitRule();
37301 		}
37302 		return _localctx;
37303 	}
37304 
37305 	public static class AggregationClauseContext extends ParserRuleContext {
37306 		public List<SelectClauseContext> selectClause() {
37307 			return getRuleContexts(SelectClauseContext.class);
37308 		}
37309 		public SelectClauseContext selectClause(int i) {
37310 			return getRuleContext(SelectClauseContext.class,i);
37311 		}
37312 		public List<TerminalNode> UNION() { return getTokens(SQLServerStatementParser.UNION); }
37313 		public TerminalNode UNION(int i) {
37314 			return getToken(SQLServerStatementParser.UNION, i);
37315 		}
37316 		public List<TerminalNode> EXCEPT() { return getTokens(SQLServerStatementParser.EXCEPT); }
37317 		public TerminalNode EXCEPT(int i) {
37318 			return getToken(SQLServerStatementParser.EXCEPT, i);
37319 		}
37320 		public List<TerminalNode> INTERSECT() { return getTokens(SQLServerStatementParser.INTERSECT); }
37321 		public TerminalNode INTERSECT(int i) {
37322 			return getToken(SQLServerStatementParser.INTERSECT, i);
37323 		}
37324 		public List<TerminalNode> ALL() { return getTokens(SQLServerStatementParser.ALL); }
37325 		public TerminalNode ALL(int i) {
37326 			return getToken(SQLServerStatementParser.ALL, i);
37327 		}
37328 		public AggregationClauseContext(ParserRuleContext parent, int invokingState) {
37329 			super(parent, invokingState);
37330 		}
37331 		@Override public int getRuleIndex() { return RULE_aggregationClause; }
37332 		@Override
37333 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37334 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationClause(this);
37335 			else return visitor.visitChildren(this);
37336 		}
37337 	}
37338 
37339 	public final AggregationClauseContext aggregationClause() throws RecognitionException {
37340 		AggregationClauseContext _localctx = new AggregationClauseContext(_ctx, getState());
37341 		enterRule(_localctx, 716, RULE_aggregationClause);
37342 		int _la;
37343 		try {
37344 			enterOuterAlt(_localctx, 1);
37345 			{
37346 			setState(5156);
37347 			selectClause();
37348 			setState(5168);
37349 			_errHandler.sync(this);
37350 			_la = _input.LA(1);
37351 			while (_la==UNION || _la==EXCEPT || _la==INTERSECT) {
37352 				{
37353 				{
37354 				setState(5163);
37355 				_errHandler.sync(this);
37356 				switch (_input.LA(1)) {
37357 				case UNION:
37358 					{
37359 					setState(5157);
37360 					match(UNION);
37361 					setState(5159);
37362 					_errHandler.sync(this);
37363 					_la = _input.LA(1);
37364 					if (_la==ALL) {
37365 						{
37366 						setState(5158);
37367 						match(ALL);
37368 						}
37369 					}
37370 
37371 					}
37372 					break;
37373 				case EXCEPT:
37374 					{
37375 					setState(5161);
37376 					match(EXCEPT);
37377 					}
37378 					break;
37379 				case INTERSECT:
37380 					{
37381 					setState(5162);
37382 					match(INTERSECT);
37383 					}
37384 					break;
37385 				default:
37386 					throw new NoViableAltException(this);
37387 				}
37388 				setState(5165);
37389 				selectClause();
37390 				}
37391 				}
37392 				setState(5170);
37393 				_errHandler.sync(this);
37394 				_la = _input.LA(1);
37395 			}
37396 			}
37397 		}
37398 		catch (RecognitionException re) {
37399 			_localctx.exception = re;
37400 			_errHandler.reportError(this, re);
37401 			_errHandler.recover(this, re);
37402 		}
37403 		finally {
37404 			exitRule();
37405 		}
37406 		return _localctx;
37407 	}
37408 
37409 	public static class SelectClauseContext extends ParserRuleContext {
37410 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
37411 		public ProjectionsContext projections() {
37412 			return getRuleContext(ProjectionsContext.class,0);
37413 		}
37414 		public SelectWithClauseContext selectWithClause() {
37415 			return getRuleContext(SelectWithClauseContext.class,0);
37416 		}
37417 		public DuplicateSpecificationContext duplicateSpecification() {
37418 			return getRuleContext(DuplicateSpecificationContext.class,0);
37419 		}
37420 		public FromClauseContext fromClause() {
37421 			return getRuleContext(FromClauseContext.class,0);
37422 		}
37423 		public WhereClauseContext whereClause() {
37424 			return getRuleContext(WhereClauseContext.class,0);
37425 		}
37426 		public GroupByClauseContext groupByClause() {
37427 			return getRuleContext(GroupByClauseContext.class,0);
37428 		}
37429 		public HavingClauseContext havingClause() {
37430 			return getRuleContext(HavingClauseContext.class,0);
37431 		}
37432 		public OrderByClauseContext orderByClause() {
37433 			return getRuleContext(OrderByClauseContext.class,0);
37434 		}
37435 		public ForClauseContext forClause() {
37436 			return getRuleContext(ForClauseContext.class,0);
37437 		}
37438 		public SelectClauseContext(ParserRuleContext parent, int invokingState) {
37439 			super(parent, invokingState);
37440 		}
37441 		@Override public int getRuleIndex() { return RULE_selectClause; }
37442 		@Override
37443 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37444 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelectClause(this);
37445 			else return visitor.visitChildren(this);
37446 		}
37447 	}
37448 
37449 	public final SelectClauseContext selectClause() throws RecognitionException {
37450 		SelectClauseContext _localctx = new SelectClauseContext(_ctx, getState());
37451 		enterRule(_localctx, 718, RULE_selectClause);
37452 		int _la;
37453 		try {
37454 			enterOuterAlt(_localctx, 1);
37455 			{
37456 			setState(5172);
37457 			_errHandler.sync(this);
37458 			_la = _input.LA(1);
37459 			if (_la==WITH) {
37460 				{
37461 				setState(5171);
37462 				selectWithClause();
37463 				}
37464 			}
37465 
37466 			setState(5174);
37467 			match(SELECT);
37468 			setState(5176);
37469 			_errHandler.sync(this);
37470 			_la = _input.LA(1);
37471 			if (_la==DISTINCT || _la==ALL) {
37472 				{
37473 				setState(5175);
37474 				duplicateSpecification();
37475 				}
37476 			}
37477 
37478 			setState(5178);
37479 			projections();
37480 			setState(5180);
37481 			_errHandler.sync(this);
37482 			_la = _input.LA(1);
37483 			if (_la==FROM) {
37484 				{
37485 				setState(5179);
37486 				fromClause();
37487 				}
37488 			}
37489 
37490 			setState(5183);
37491 			_errHandler.sync(this);
37492 			_la = _input.LA(1);
37493 			if (_la==WHERE) {
37494 				{
37495 				setState(5182);
37496 				whereClause();
37497 				}
37498 			}
37499 
37500 			setState(5186);
37501 			_errHandler.sync(this);
37502 			_la = _input.LA(1);
37503 			if (_la==GROUP) {
37504 				{
37505 				setState(5185);
37506 				groupByClause();
37507 				}
37508 			}
37509 
37510 			setState(5189);
37511 			_errHandler.sync(this);
37512 			_la = _input.LA(1);
37513 			if (_la==HAVING) {
37514 				{
37515 				setState(5188);
37516 				havingClause();
37517 				}
37518 			}
37519 
37520 			setState(5192);
37521 			_errHandler.sync(this);
37522 			_la = _input.LA(1);
37523 			if (_la==ORDER) {
37524 				{
37525 				setState(5191);
37526 				orderByClause();
37527 				}
37528 			}
37529 
37530 			setState(5195);
37531 			_errHandler.sync(this);
37532 			switch ( getInterpreter().adaptivePredict(_input,583,_ctx) ) {
37533 			case 1:
37534 				{
37535 				setState(5194);
37536 				forClause();
37537 				}
37538 				break;
37539 			}
37540 			}
37541 		}
37542 		catch (RecognitionException re) {
37543 			_localctx.exception = re;
37544 			_errHandler.reportError(this, re);
37545 			_errHandler.recover(this, re);
37546 		}
37547 		finally {
37548 			exitRule();
37549 		}
37550 		return _localctx;
37551 	}
37552 
37553 	public static class DuplicateSpecificationContext extends ParserRuleContext {
37554 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
37555 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
37556 		public DuplicateSpecificationContext(ParserRuleContext parent, int invokingState) {
37557 			super(parent, invokingState);
37558 		}
37559 		@Override public int getRuleIndex() { return RULE_duplicateSpecification; }
37560 		@Override
37561 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37562 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDuplicateSpecification(this);
37563 			else return visitor.visitChildren(this);
37564 		}
37565 	}
37566 
37567 	public final DuplicateSpecificationContext duplicateSpecification() throws RecognitionException {
37568 		DuplicateSpecificationContext _localctx = new DuplicateSpecificationContext(_ctx, getState());
37569 		enterRule(_localctx, 720, RULE_duplicateSpecification);
37570 		int _la;
37571 		try {
37572 			enterOuterAlt(_localctx, 1);
37573 			{
37574 			setState(5197);
37575 			_la = _input.LA(1);
37576 			if ( !(_la==DISTINCT || _la==ALL) ) {
37577 			_errHandler.recoverInline(this);
37578 			}
37579 			else {
37580 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
37581 				_errHandler.reportMatch(this);
37582 				consume();
37583 			}
37584 			}
37585 		}
37586 		catch (RecognitionException re) {
37587 			_localctx.exception = re;
37588 			_errHandler.reportError(this, re);
37589 			_errHandler.recover(this, re);
37590 		}
37591 		finally {
37592 			exitRule();
37593 		}
37594 		return _localctx;
37595 	}
37596 
37597 	public static class ProjectionsContext extends ParserRuleContext {
37598 		public List<ProjectionContext> projection() {
37599 			return getRuleContexts(ProjectionContext.class);
37600 		}
37601 		public ProjectionContext projection(int i) {
37602 			return getRuleContext(ProjectionContext.class,i);
37603 		}
37604 		public TopContext top() {
37605 			return getRuleContext(TopContext.class,0);
37606 		}
37607 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
37608 		public TerminalNode COMMA_(int i) {
37609 			return getToken(SQLServerStatementParser.COMMA_, i);
37610 		}
37611 		public ProjectionsContext(ParserRuleContext parent, int invokingState) {
37612 			super(parent, invokingState);
37613 		}
37614 		@Override public int getRuleIndex() { return RULE_projections; }
37615 		@Override
37616 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37617 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProjections(this);
37618 			else return visitor.visitChildren(this);
37619 		}
37620 	}
37621 
37622 	public final ProjectionsContext projections() throws RecognitionException {
37623 		ProjectionsContext _localctx = new ProjectionsContext(_ctx, getState());
37624 		enterRule(_localctx, 722, RULE_projections);
37625 		int _la;
37626 		try {
37627 			enterOuterAlt(_localctx, 1);
37628 			{
37629 			setState(5204);
37630 			_errHandler.sync(this);
37631 			switch ( getInterpreter().adaptivePredict(_input,585,_ctx) ) {
37632 			case 1:
37633 				{
37634 				setState(5199);
37635 				projection();
37636 				}
37637 				break;
37638 			case 2:
37639 				{
37640 				setState(5200);
37641 				top();
37642 				setState(5202);
37643 				_errHandler.sync(this);
37644 				switch ( getInterpreter().adaptivePredict(_input,584,_ctx) ) {
37645 				case 1:
37646 					{
37647 					setState(5201);
37648 					projection();
37649 					}
37650 					break;
37651 				}
37652 				}
37653 				break;
37654 			}
37655 			setState(5210);
37656 			_errHandler.sync(this);
37657 			_la = _input.LA(1);
37658 			while (_la==COMMA_) {
37659 				{
37660 				{
37661 				setState(5206);
37662 				match(COMMA_);
37663 				setState(5207);
37664 				projection();
37665 				}
37666 				}
37667 				setState(5212);
37668 				_errHandler.sync(this);
37669 				_la = _input.LA(1);
37670 			}
37671 			}
37672 		}
37673 		catch (RecognitionException re) {
37674 			_localctx.exception = re;
37675 			_errHandler.reportError(this, re);
37676 			_errHandler.recover(this, re);
37677 		}
37678 		finally {
37679 			exitRule();
37680 		}
37681 		return _localctx;
37682 	}
37683 
37684 	public static class ProjectionContext extends ParserRuleContext {
37685 		public QualifiedShorthandContext qualifiedShorthand() {
37686 			return getRuleContext(QualifiedShorthandContext.class,0);
37687 		}
37688 		public UnqualifiedShorthandContext unqualifiedShorthand() {
37689 			return getRuleContext(UnqualifiedShorthandContext.class,0);
37690 		}
37691 		public ColumnNameContext columnName() {
37692 			return getRuleContext(ColumnNameContext.class,0);
37693 		}
37694 		public ExprContext expr() {
37695 			return getRuleContext(ExprContext.class,0);
37696 		}
37697 		public AliasContext alias() {
37698 			return getRuleContext(AliasContext.class,0);
37699 		}
37700 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
37701 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
37702 		public ProjectionContext(ParserRuleContext parent, int invokingState) {
37703 			super(parent, invokingState);
37704 		}
37705 		@Override public int getRuleIndex() { return RULE_projection; }
37706 		@Override
37707 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37708 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProjection(this);
37709 			else return visitor.visitChildren(this);
37710 		}
37711 	}
37712 
37713 	public final ProjectionContext projection() throws RecognitionException {
37714 		ProjectionContext _localctx = new ProjectionContext(_ctx, getState());
37715 		enterRule(_localctx, 724, RULE_projection);
37716 		int _la;
37717 		try {
37718 			setState(5234);
37719 			_errHandler.sync(this);
37720 			switch ( getInterpreter().adaptivePredict(_input,592,_ctx) ) {
37721 			case 1:
37722 				enterOuterAlt(_localctx, 1);
37723 				{
37724 				setState(5213);
37725 				qualifiedShorthand();
37726 				}
37727 				break;
37728 			case 2:
37729 				enterOuterAlt(_localctx, 2);
37730 				{
37731 				setState(5214);
37732 				unqualifiedShorthand();
37733 				}
37734 				break;
37735 			case 3:
37736 				enterOuterAlt(_localctx, 3);
37737 				{
37738 				setState(5218);
37739 				_errHandler.sync(this);
37740 				switch ( getInterpreter().adaptivePredict(_input,587,_ctx) ) {
37741 				case 1:
37742 					{
37743 					setState(5215);
37744 					alias();
37745 					setState(5216);
37746 					match(EQ_);
37747 					}
37748 					break;
37749 				}
37750 				setState(5222);
37751 				_errHandler.sync(this);
37752 				switch ( getInterpreter().adaptivePredict(_input,588,_ctx) ) {
37753 				case 1:
37754 					{
37755 					setState(5220);
37756 					columnName();
37757 					}
37758 					break;
37759 				case 2:
37760 					{
37761 					setState(5221);
37762 					expr(0);
37763 					}
37764 					break;
37765 				}
37766 				}
37767 				break;
37768 			case 4:
37769 				enterOuterAlt(_localctx, 4);
37770 				{
37771 				setState(5226);
37772 				_errHandler.sync(this);
37773 				switch ( getInterpreter().adaptivePredict(_input,589,_ctx) ) {
37774 				case 1:
37775 					{
37776 					setState(5224);
37777 					columnName();
37778 					}
37779 					break;
37780 				case 2:
37781 					{
37782 					setState(5225);
37783 					expr(0);
37784 					}
37785 					break;
37786 				}
37787 				setState(5232);
37788 				_errHandler.sync(this);
37789 				switch ( getInterpreter().adaptivePredict(_input,591,_ctx) ) {
37790 				case 1:
37791 					{
37792 					setState(5229);
37793 					_errHandler.sync(this);
37794 					_la = _input.LA(1);
37795 					if (_la==AS) {
37796 						{
37797 						setState(5228);
37798 						match(AS);
37799 						}
37800 					}
37801 
37802 					setState(5231);
37803 					alias();
37804 					}
37805 					break;
37806 				}
37807 				}
37808 				break;
37809 			}
37810 		}
37811 		catch (RecognitionException re) {
37812 			_localctx.exception = re;
37813 			_errHandler.reportError(this, re);
37814 			_errHandler.recover(this, re);
37815 		}
37816 		finally {
37817 			exitRule();
37818 		}
37819 		return _localctx;
37820 	}
37821 
37822 	public static class TopContext extends ParserRuleContext {
37823 		public TerminalNode TOP() { return getToken(SQLServerStatementParser.TOP, 0); }
37824 		public TopNumContext topNum() {
37825 			return getRuleContext(TopNumContext.class,0);
37826 		}
37827 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
37828 		public TerminalNode LP_(int i) {
37829 			return getToken(SQLServerStatementParser.LP_, i);
37830 		}
37831 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
37832 		public TerminalNode RP_(int i) {
37833 			return getToken(SQLServerStatementParser.RP_, i);
37834 		}
37835 		public TerminalNode PERCENT() { return getToken(SQLServerStatementParser.PERCENT, 0); }
37836 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
37837 		public TerminalNode TIES() { return getToken(SQLServerStatementParser.TIES, 0); }
37838 		public TerminalNode ROW_NUMBER() { return getToken(SQLServerStatementParser.ROW_NUMBER, 0); }
37839 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
37840 		public OrderByClauseContext orderByClause() {
37841 			return getRuleContext(OrderByClauseContext.class,0);
37842 		}
37843 		public AliasContext alias() {
37844 			return getRuleContext(AliasContext.class,0);
37845 		}
37846 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
37847 		public TopContext(ParserRuleContext parent, int invokingState) {
37848 			super(parent, invokingState);
37849 		}
37850 		@Override public int getRuleIndex() { return RULE_top; }
37851 		@Override
37852 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37853 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTop(this);
37854 			else return visitor.visitChildren(this);
37855 		}
37856 	}
37857 
37858 	public final TopContext top() throws RecognitionException {
37859 		TopContext _localctx = new TopContext(_ctx, getState());
37860 		enterRule(_localctx, 726, RULE_top);
37861 		int _la;
37862 		try {
37863 			enterOuterAlt(_localctx, 1);
37864 			{
37865 			setState(5236);
37866 			match(TOP);
37867 			setState(5238);
37868 			_errHandler.sync(this);
37869 			_la = _input.LA(1);
37870 			if (_la==LP_) {
37871 				{
37872 				setState(5237);
37873 				match(LP_);
37874 				}
37875 			}
37876 
37877 			setState(5240);
37878 			topNum();
37879 			setState(5242);
37880 			_errHandler.sync(this);
37881 			switch ( getInterpreter().adaptivePredict(_input,594,_ctx) ) {
37882 			case 1:
37883 				{
37884 				setState(5241);
37885 				match(RP_);
37886 				}
37887 				break;
37888 			}
37889 			setState(5245);
37890 			_errHandler.sync(this);
37891 			_la = _input.LA(1);
37892 			if (_la==PERCENT) {
37893 				{
37894 				setState(5244);
37895 				match(PERCENT);
37896 				}
37897 			}
37898 
37899 			setState(5249);
37900 			_errHandler.sync(this);
37901 			switch ( getInterpreter().adaptivePredict(_input,596,_ctx) ) {
37902 			case 1:
37903 				{
37904 				setState(5247);
37905 				match(WITH);
37906 				setState(5248);
37907 				match(TIES);
37908 				}
37909 				break;
37910 			}
37911 			setState(5264);
37912 			_errHandler.sync(this);
37913 			switch ( getInterpreter().adaptivePredict(_input,599,_ctx) ) {
37914 			case 1:
37915 				{
37916 				setState(5251);
37917 				match(ROW_NUMBER);
37918 				setState(5252);
37919 				match(LP_);
37920 				setState(5253);
37921 				match(RP_);
37922 				setState(5254);
37923 				match(OVER);
37924 				setState(5255);
37925 				match(LP_);
37926 				setState(5256);
37927 				orderByClause();
37928 				setState(5257);
37929 				match(RP_);
37930 				setState(5262);
37931 				_errHandler.sync(this);
37932 				switch ( getInterpreter().adaptivePredict(_input,598,_ctx) ) {
37933 				case 1:
37934 					{
37935 					setState(5259);
37936 					_errHandler.sync(this);
37937 					_la = _input.LA(1);
37938 					if (_la==AS) {
37939 						{
37940 						setState(5258);
37941 						match(AS);
37942 						}
37943 					}
37944 
37945 					setState(5261);
37946 					alias();
37947 					}
37948 					break;
37949 				}
37950 				}
37951 				break;
37952 			}
37953 			}
37954 		}
37955 		catch (RecognitionException re) {
37956 			_localctx.exception = re;
37957 			_errHandler.reportError(this, re);
37958 			_errHandler.recover(this, re);
37959 		}
37960 		finally {
37961 			exitRule();
37962 		}
37963 		return _localctx;
37964 	}
37965 
37966 	public static class TopNumContext extends ParserRuleContext {
37967 		public NumberLiteralsContext numberLiterals() {
37968 			return getRuleContext(NumberLiteralsContext.class,0);
37969 		}
37970 		public ParameterMarkerContext parameterMarker() {
37971 			return getRuleContext(ParameterMarkerContext.class,0);
37972 		}
37973 		public TopNumContext(ParserRuleContext parent, int invokingState) {
37974 			super(parent, invokingState);
37975 		}
37976 		@Override public int getRuleIndex() { return RULE_topNum; }
37977 		@Override
37978 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37979 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTopNum(this);
37980 			else return visitor.visitChildren(this);
37981 		}
37982 	}
37983 
37984 	public final TopNumContext topNum() throws RecognitionException {
37985 		TopNumContext _localctx = new TopNumContext(_ctx, getState());
37986 		enterRule(_localctx, 728, RULE_topNum);
37987 		try {
37988 			setState(5268);
37989 			_errHandler.sync(this);
37990 			switch (_input.LA(1)) {
37991 			case PLUS_:
37992 			case MINUS_:
37993 			case NUMBER_:
37994 				enterOuterAlt(_localctx, 1);
37995 				{
37996 				setState(5266);
37997 				numberLiterals();
37998 				}
37999 				break;
38000 			case QUESTION_:
38001 				enterOuterAlt(_localctx, 2);
38002 				{
38003 				setState(5267);
38004 				parameterMarker();
38005 				}
38006 				break;
38007 			default:
38008 				throw new NoViableAltException(this);
38009 			}
38010 		}
38011 		catch (RecognitionException re) {
38012 			_localctx.exception = re;
38013 			_errHandler.reportError(this, re);
38014 			_errHandler.recover(this, re);
38015 		}
38016 		finally {
38017 			exitRule();
38018 		}
38019 		return _localctx;
38020 	}
38021 
38022 	public static class UnqualifiedShorthandContext extends ParserRuleContext {
38023 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
38024 		public UnqualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
38025 			super(parent, invokingState);
38026 		}
38027 		@Override public int getRuleIndex() { return RULE_unqualifiedShorthand; }
38028 		@Override
38029 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38030 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUnqualifiedShorthand(this);
38031 			else return visitor.visitChildren(this);
38032 		}
38033 	}
38034 
38035 	public final UnqualifiedShorthandContext unqualifiedShorthand() throws RecognitionException {
38036 		UnqualifiedShorthandContext _localctx = new UnqualifiedShorthandContext(_ctx, getState());
38037 		enterRule(_localctx, 730, RULE_unqualifiedShorthand);
38038 		try {
38039 			enterOuterAlt(_localctx, 1);
38040 			{
38041 			setState(5270);
38042 			match(ASTERISK_);
38043 			}
38044 		}
38045 		catch (RecognitionException re) {
38046 			_localctx.exception = re;
38047 			_errHandler.reportError(this, re);
38048 			_errHandler.recover(this, re);
38049 		}
38050 		finally {
38051 			exitRule();
38052 		}
38053 		return _localctx;
38054 	}
38055 
38056 	public static class QualifiedShorthandContext extends ParserRuleContext {
38057 		public IdentifierContext identifier() {
38058 			return getRuleContext(IdentifierContext.class,0);
38059 		}
38060 		public TerminalNode DOT_ASTERISK_() { return getToken(SQLServerStatementParser.DOT_ASTERISK_, 0); }
38061 		public QualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
38062 			super(parent, invokingState);
38063 		}
38064 		@Override public int getRuleIndex() { return RULE_qualifiedShorthand; }
38065 		@Override
38066 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38067 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQualifiedShorthand(this);
38068 			else return visitor.visitChildren(this);
38069 		}
38070 	}
38071 
38072 	public final QualifiedShorthandContext qualifiedShorthand() throws RecognitionException {
38073 		QualifiedShorthandContext _localctx = new QualifiedShorthandContext(_ctx, getState());
38074 		enterRule(_localctx, 732, RULE_qualifiedShorthand);
38075 		try {
38076 			enterOuterAlt(_localctx, 1);
38077 			{
38078 			setState(5272);
38079 			identifier();
38080 			setState(5273);
38081 			match(DOT_ASTERISK_);
38082 			}
38083 		}
38084 		catch (RecognitionException re) {
38085 			_localctx.exception = re;
38086 			_errHandler.reportError(this, re);
38087 			_errHandler.recover(this, re);
38088 		}
38089 		finally {
38090 			exitRule();
38091 		}
38092 		return _localctx;
38093 	}
38094 
38095 	public static class FromClauseContext extends ParserRuleContext {
38096 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
38097 		public TableReferencesContext tableReferences() {
38098 			return getRuleContext(TableReferencesContext.class,0);
38099 		}
38100 		public FromClauseContext(ParserRuleContext parent, int invokingState) {
38101 			super(parent, invokingState);
38102 		}
38103 		@Override public int getRuleIndex() { return RULE_fromClause; }
38104 		@Override
38105 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38106 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFromClause(this);
38107 			else return visitor.visitChildren(this);
38108 		}
38109 	}
38110 
38111 	public final FromClauseContext fromClause() throws RecognitionException {
38112 		FromClauseContext _localctx = new FromClauseContext(_ctx, getState());
38113 		enterRule(_localctx, 734, RULE_fromClause);
38114 		try {
38115 			enterOuterAlt(_localctx, 1);
38116 			{
38117 			setState(5275);
38118 			match(FROM);
38119 			setState(5276);
38120 			tableReferences();
38121 			}
38122 		}
38123 		catch (RecognitionException re) {
38124 			_localctx.exception = re;
38125 			_errHandler.reportError(this, re);
38126 			_errHandler.recover(this, re);
38127 		}
38128 		finally {
38129 			exitRule();
38130 		}
38131 		return _localctx;
38132 	}
38133 
38134 	public static class TableReferencesContext extends ParserRuleContext {
38135 		public List<TableReferenceContext> tableReference() {
38136 			return getRuleContexts(TableReferenceContext.class);
38137 		}
38138 		public TableReferenceContext tableReference(int i) {
38139 			return getRuleContext(TableReferenceContext.class,i);
38140 		}
38141 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
38142 		public TerminalNode COMMA_(int i) {
38143 			return getToken(SQLServerStatementParser.COMMA_, i);
38144 		}
38145 		public TableReferencesContext(ParserRuleContext parent, int invokingState) {
38146 			super(parent, invokingState);
38147 		}
38148 		@Override public int getRuleIndex() { return RULE_tableReferences; }
38149 		@Override
38150 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38151 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableReferences(this);
38152 			else return visitor.visitChildren(this);
38153 		}
38154 	}
38155 
38156 	public final TableReferencesContext tableReferences() throws RecognitionException {
38157 		TableReferencesContext _localctx = new TableReferencesContext(_ctx, getState());
38158 		enterRule(_localctx, 736, RULE_tableReferences);
38159 		int _la;
38160 		try {
38161 			enterOuterAlt(_localctx, 1);
38162 			{
38163 			setState(5278);
38164 			tableReference();
38165 			setState(5283);
38166 			_errHandler.sync(this);
38167 			_la = _input.LA(1);
38168 			while (_la==COMMA_) {
38169 				{
38170 				{
38171 				setState(5279);
38172 				match(COMMA_);
38173 				setState(5280);
38174 				tableReference();
38175 				}
38176 				}
38177 				setState(5285);
38178 				_errHandler.sync(this);
38179 				_la = _input.LA(1);
38180 			}
38181 			}
38182 		}
38183 		catch (RecognitionException re) {
38184 			_localctx.exception = re;
38185 			_errHandler.reportError(this, re);
38186 			_errHandler.recover(this, re);
38187 		}
38188 		finally {
38189 			exitRule();
38190 		}
38191 		return _localctx;
38192 	}
38193 
38194 	public static class TableReferenceContext extends ParserRuleContext {
38195 		public TableFactorContext tableFactor() {
38196 			return getRuleContext(TableFactorContext.class,0);
38197 		}
38198 		public List<JoinedTableContext> joinedTable() {
38199 			return getRuleContexts(JoinedTableContext.class);
38200 		}
38201 		public JoinedTableContext joinedTable(int i) {
38202 			return getRuleContext(JoinedTableContext.class,i);
38203 		}
38204 		public TableReferenceContext(ParserRuleContext parent, int invokingState) {
38205 			super(parent, invokingState);
38206 		}
38207 		@Override public int getRuleIndex() { return RULE_tableReference; }
38208 		@Override
38209 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38210 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableReference(this);
38211 			else return visitor.visitChildren(this);
38212 		}
38213 	}
38214 
38215 	public final TableReferenceContext tableReference() throws RecognitionException {
38216 		TableReferenceContext _localctx = new TableReferenceContext(_ctx, getState());
38217 		enterRule(_localctx, 738, RULE_tableReference);
38218 		int _la;
38219 		try {
38220 			enterOuterAlt(_localctx, 1);
38221 			{
38222 			setState(5286);
38223 			tableFactor();
38224 			setState(5290);
38225 			_errHandler.sync(this);
38226 			_la = _input.LA(1);
38227 			while (((((_la - 86)) & ~0x3f) == 0 && ((1L << (_la - 86)) & ((1L << (NATURAL - 86)) | (1L << (JOIN - 86)) | (1L << (FULL - 86)) | (1L << (INNER - 86)) | (1L << (OUTER - 86)) | (1L << (LEFT - 86)) | (1L << (RIGHT - 86)) | (1L << (CROSS - 86)))) != 0)) {
38228 				{
38229 				{
38230 				setState(5287);
38231 				joinedTable();
38232 				}
38233 				}
38234 				setState(5292);
38235 				_errHandler.sync(this);
38236 				_la = _input.LA(1);
38237 			}
38238 			}
38239 		}
38240 		catch (RecognitionException re) {
38241 			_localctx.exception = re;
38242 			_errHandler.reportError(this, re);
38243 			_errHandler.recover(this, re);
38244 		}
38245 		finally {
38246 			exitRule();
38247 		}
38248 		return _localctx;
38249 	}
38250 
38251 	public static class TableFactorContext extends ParserRuleContext {
38252 		public TableNameContext tableName() {
38253 			return getRuleContext(TableNameContext.class,0);
38254 		}
38255 		public AliasContext alias() {
38256 			return getRuleContext(AliasContext.class,0);
38257 		}
38258 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
38259 		public SubqueryContext subquery() {
38260 			return getRuleContext(SubqueryContext.class,0);
38261 		}
38262 		public ColumnNamesContext columnNames() {
38263 			return getRuleContext(ColumnNamesContext.class,0);
38264 		}
38265 		public ExprContext expr() {
38266 			return getRuleContext(ExprContext.class,0);
38267 		}
38268 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
38269 		public TableReferencesContext tableReferences() {
38270 			return getRuleContext(TableReferencesContext.class,0);
38271 		}
38272 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
38273 		public TableFactorContext(ParserRuleContext parent, int invokingState) {
38274 			super(parent, invokingState);
38275 		}
38276 		@Override public int getRuleIndex() { return RULE_tableFactor; }
38277 		@Override
38278 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38279 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableFactor(this);
38280 			else return visitor.visitChildren(this);
38281 		}
38282 	}
38283 
38284 	public final TableFactorContext tableFactor() throws RecognitionException {
38285 		TableFactorContext _localctx = new TableFactorContext(_ctx, getState());
38286 		enterRule(_localctx, 740, RULE_tableFactor);
38287 		int _la;
38288 		try {
38289 			setState(5319);
38290 			_errHandler.sync(this);
38291 			switch ( getInterpreter().adaptivePredict(_input,609,_ctx) ) {
38292 			case 1:
38293 				enterOuterAlt(_localctx, 1);
38294 				{
38295 				setState(5293);
38296 				tableName();
38297 				setState(5298);
38298 				_errHandler.sync(this);
38299 				switch ( getInterpreter().adaptivePredict(_input,604,_ctx) ) {
38300 				case 1:
38301 					{
38302 					setState(5295);
38303 					_errHandler.sync(this);
38304 					_la = _input.LA(1);
38305 					if (_la==AS) {
38306 						{
38307 						setState(5294);
38308 						match(AS);
38309 						}
38310 					}
38311 
38312 					setState(5297);
38313 					alias();
38314 					}
38315 					break;
38316 				}
38317 				}
38318 				break;
38319 			case 2:
38320 				enterOuterAlt(_localctx, 2);
38321 				{
38322 				setState(5300);
38323 				subquery();
38324 				setState(5302);
38325 				_errHandler.sync(this);
38326 				_la = _input.LA(1);
38327 				if (_la==AS) {
38328 					{
38329 					setState(5301);
38330 					match(AS);
38331 					}
38332 				}
38333 
38334 				setState(5304);
38335 				alias();
38336 				setState(5306);
38337 				_errHandler.sync(this);
38338 				_la = _input.LA(1);
38339 				if (_la==LP_) {
38340 					{
38341 					setState(5305);
38342 					columnNames();
38343 					}
38344 				}
38345 
38346 				}
38347 				break;
38348 			case 3:
38349 				enterOuterAlt(_localctx, 3);
38350 				{
38351 				setState(5308);
38352 				expr(0);
38353 				setState(5313);
38354 				_errHandler.sync(this);
38355 				switch ( getInterpreter().adaptivePredict(_input,608,_ctx) ) {
38356 				case 1:
38357 					{
38358 					setState(5310);
38359 					_errHandler.sync(this);
38360 					_la = _input.LA(1);
38361 					if (_la==AS) {
38362 						{
38363 						setState(5309);
38364 						match(AS);
38365 						}
38366 					}
38367 
38368 					setState(5312);
38369 					alias();
38370 					}
38371 					break;
38372 				}
38373 				}
38374 				break;
38375 			case 4:
38376 				enterOuterAlt(_localctx, 4);
38377 				{
38378 				setState(5315);
38379 				match(LP_);
38380 				setState(5316);
38381 				tableReferences();
38382 				setState(5317);
38383 				match(RP_);
38384 				}
38385 				break;
38386 			}
38387 		}
38388 		catch (RecognitionException re) {
38389 			_localctx.exception = re;
38390 			_errHandler.reportError(this, re);
38391 			_errHandler.recover(this, re);
38392 		}
38393 		finally {
38394 			exitRule();
38395 		}
38396 		return _localctx;
38397 	}
38398 
38399 	public static class JoinedTableContext extends ParserRuleContext {
38400 		public TableFactorContext tableFactor() {
38401 			return getRuleContext(TableFactorContext.class,0);
38402 		}
38403 		public TerminalNode JOIN() { return getToken(SQLServerStatementParser.JOIN, 0); }
38404 		public TerminalNode NATURAL() { return getToken(SQLServerStatementParser.NATURAL, 0); }
38405 		public JoinSpecificationContext joinSpecification() {
38406 			return getRuleContext(JoinSpecificationContext.class,0);
38407 		}
38408 		public TerminalNode INNER() { return getToken(SQLServerStatementParser.INNER, 0); }
38409 		public TerminalNode CROSS() { return getToken(SQLServerStatementParser.CROSS, 0); }
38410 		public TerminalNode LEFT() { return getToken(SQLServerStatementParser.LEFT, 0); }
38411 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
38412 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
38413 		public TerminalNode OUTER() { return getToken(SQLServerStatementParser.OUTER, 0); }
38414 		public TerminalNode APPLY() { return getToken(SQLServerStatementParser.APPLY, 0); }
38415 		public JoinedTableContext(ParserRuleContext parent, int invokingState) {
38416 			super(parent, invokingState);
38417 		}
38418 		@Override public int getRuleIndex() { return RULE_joinedTable; }
38419 		@Override
38420 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38421 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJoinedTable(this);
38422 			else return visitor.visitChildren(this);
38423 		}
38424 	}
38425 
38426 	public final JoinedTableContext joinedTable() throws RecognitionException {
38427 		JoinedTableContext _localctx = new JoinedTableContext(_ctx, getState());
38428 		enterRule(_localctx, 742, RULE_joinedTable);
38429 		int _la;
38430 		try {
38431 			setState(5351);
38432 			_errHandler.sync(this);
38433 			switch ( getInterpreter().adaptivePredict(_input,617,_ctx) ) {
38434 			case 1:
38435 				enterOuterAlt(_localctx, 1);
38436 				{
38437 				setState(5322);
38438 				_errHandler.sync(this);
38439 				_la = _input.LA(1);
38440 				if (_la==NATURAL) {
38441 					{
38442 					setState(5321);
38443 					match(NATURAL);
38444 					}
38445 				}
38446 
38447 				{
38448 				setState(5325);
38449 				_errHandler.sync(this);
38450 				_la = _input.LA(1);
38451 				if (_la==INNER || _la==CROSS) {
38452 					{
38453 					setState(5324);
38454 					_la = _input.LA(1);
38455 					if ( !(_la==INNER || _la==CROSS) ) {
38456 					_errHandler.recoverInline(this);
38457 					}
38458 					else {
38459 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38460 						_errHandler.reportMatch(this);
38461 						consume();
38462 					}
38463 					}
38464 				}
38465 
38466 				setState(5327);
38467 				match(JOIN);
38468 				}
38469 				setState(5329);
38470 				tableFactor();
38471 				setState(5331);
38472 				_errHandler.sync(this);
38473 				_la = _input.LA(1);
38474 				if (_la==USING || _la==ON) {
38475 					{
38476 					setState(5330);
38477 					joinSpecification();
38478 					}
38479 				}
38480 
38481 				}
38482 				break;
38483 			case 2:
38484 				enterOuterAlt(_localctx, 2);
38485 				{
38486 				setState(5334);
38487 				_errHandler.sync(this);
38488 				_la = _input.LA(1);
38489 				if (_la==NATURAL) {
38490 					{
38491 					setState(5333);
38492 					match(NATURAL);
38493 					}
38494 				}
38495 
38496 				setState(5336);
38497 				_la = _input.LA(1);
38498 				if ( !(((((_la - 88)) & ~0x3f) == 0 && ((1L << (_la - 88)) & ((1L << (FULL - 88)) | (1L << (LEFT - 88)) | (1L << (RIGHT - 88)))) != 0)) ) {
38499 				_errHandler.recoverInline(this);
38500 				}
38501 				else {
38502 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38503 					_errHandler.reportMatch(this);
38504 					consume();
38505 				}
38506 				setState(5338);
38507 				_errHandler.sync(this);
38508 				_la = _input.LA(1);
38509 				if (_la==OUTER) {
38510 					{
38511 					setState(5337);
38512 					match(OUTER);
38513 					}
38514 				}
38515 
38516 				setState(5340);
38517 				match(JOIN);
38518 				setState(5341);
38519 				tableFactor();
38520 				setState(5343);
38521 				_errHandler.sync(this);
38522 				_la = _input.LA(1);
38523 				if (_la==USING || _la==ON) {
38524 					{
38525 					setState(5342);
38526 					joinSpecification();
38527 					}
38528 				}
38529 
38530 				}
38531 				break;
38532 			case 3:
38533 				enterOuterAlt(_localctx, 3);
38534 				{
38535 				setState(5345);
38536 				_la = _input.LA(1);
38537 				if ( !(_la==OUTER || _la==CROSS) ) {
38538 				_errHandler.recoverInline(this);
38539 				}
38540 				else {
38541 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38542 					_errHandler.reportMatch(this);
38543 					consume();
38544 				}
38545 				setState(5346);
38546 				match(APPLY);
38547 				setState(5347);
38548 				tableFactor();
38549 				setState(5349);
38550 				_errHandler.sync(this);
38551 				_la = _input.LA(1);
38552 				if (_la==USING || _la==ON) {
38553 					{
38554 					setState(5348);
38555 					joinSpecification();
38556 					}
38557 				}
38558 
38559 				}
38560 				break;
38561 			}
38562 		}
38563 		catch (RecognitionException re) {
38564 			_localctx.exception = re;
38565 			_errHandler.reportError(this, re);
38566 			_errHandler.recover(this, re);
38567 		}
38568 		finally {
38569 			exitRule();
38570 		}
38571 		return _localctx;
38572 	}
38573 
38574 	public static class JoinSpecificationContext extends ParserRuleContext {
38575 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
38576 		public ExprContext expr() {
38577 			return getRuleContext(ExprContext.class,0);
38578 		}
38579 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
38580 		public ColumnNamesContext columnNames() {
38581 			return getRuleContext(ColumnNamesContext.class,0);
38582 		}
38583 		public JoinSpecificationContext(ParserRuleContext parent, int invokingState) {
38584 			super(parent, invokingState);
38585 		}
38586 		@Override public int getRuleIndex() { return RULE_joinSpecification; }
38587 		@Override
38588 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38589 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJoinSpecification(this);
38590 			else return visitor.visitChildren(this);
38591 		}
38592 	}
38593 
38594 	public final JoinSpecificationContext joinSpecification() throws RecognitionException {
38595 		JoinSpecificationContext _localctx = new JoinSpecificationContext(_ctx, getState());
38596 		enterRule(_localctx, 744, RULE_joinSpecification);
38597 		try {
38598 			setState(5357);
38599 			_errHandler.sync(this);
38600 			switch (_input.LA(1)) {
38601 			case ON:
38602 				enterOuterAlt(_localctx, 1);
38603 				{
38604 				setState(5353);
38605 				match(ON);
38606 				setState(5354);
38607 				expr(0);
38608 				}
38609 				break;
38610 			case USING:
38611 				enterOuterAlt(_localctx, 2);
38612 				{
38613 				setState(5355);
38614 				match(USING);
38615 				setState(5356);
38616 				columnNames();
38617 				}
38618 				break;
38619 			default:
38620 				throw new NoViableAltException(this);
38621 			}
38622 		}
38623 		catch (RecognitionException re) {
38624 			_localctx.exception = re;
38625 			_errHandler.reportError(this, re);
38626 			_errHandler.recover(this, re);
38627 		}
38628 		finally {
38629 			exitRule();
38630 		}
38631 		return _localctx;
38632 	}
38633 
38634 	public static class WhereClauseContext extends ParserRuleContext {
38635 		public TerminalNode WHERE() { return getToken(SQLServerStatementParser.WHERE, 0); }
38636 		public ExprContext expr() {
38637 			return getRuleContext(ExprContext.class,0);
38638 		}
38639 		public WhereClauseContext(ParserRuleContext parent, int invokingState) {
38640 			super(parent, invokingState);
38641 		}
38642 		@Override public int getRuleIndex() { return RULE_whereClause; }
38643 		@Override
38644 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38645 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWhereClause(this);
38646 			else return visitor.visitChildren(this);
38647 		}
38648 	}
38649 
38650 	public final WhereClauseContext whereClause() throws RecognitionException {
38651 		WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState());
38652 		enterRule(_localctx, 746, RULE_whereClause);
38653 		try {
38654 			enterOuterAlt(_localctx, 1);
38655 			{
38656 			setState(5359);
38657 			match(WHERE);
38658 			setState(5360);
38659 			expr(0);
38660 			}
38661 		}
38662 		catch (RecognitionException re) {
38663 			_localctx.exception = re;
38664 			_errHandler.reportError(this, re);
38665 			_errHandler.recover(this, re);
38666 		}
38667 		finally {
38668 			exitRule();
38669 		}
38670 		return _localctx;
38671 	}
38672 
38673 	public static class GroupByClauseContext extends ParserRuleContext {
38674 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
38675 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
38676 		public List<OrderByItemContext> orderByItem() {
38677 			return getRuleContexts(OrderByItemContext.class);
38678 		}
38679 		public OrderByItemContext orderByItem(int i) {
38680 			return getRuleContext(OrderByItemContext.class,i);
38681 		}
38682 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
38683 		public TerminalNode COMMA_(int i) {
38684 			return getToken(SQLServerStatementParser.COMMA_, i);
38685 		}
38686 		public GroupByClauseContext(ParserRuleContext parent, int invokingState) {
38687 			super(parent, invokingState);
38688 		}
38689 		@Override public int getRuleIndex() { return RULE_groupByClause; }
38690 		@Override
38691 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38692 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGroupByClause(this);
38693 			else return visitor.visitChildren(this);
38694 		}
38695 	}
38696 
38697 	public final GroupByClauseContext groupByClause() throws RecognitionException {
38698 		GroupByClauseContext _localctx = new GroupByClauseContext(_ctx, getState());
38699 		enterRule(_localctx, 748, RULE_groupByClause);
38700 		int _la;
38701 		try {
38702 			enterOuterAlt(_localctx, 1);
38703 			{
38704 			setState(5362);
38705 			match(GROUP);
38706 			setState(5363);
38707 			match(BY);
38708 			setState(5364);
38709 			orderByItem();
38710 			setState(5369);
38711 			_errHandler.sync(this);
38712 			_la = _input.LA(1);
38713 			while (_la==COMMA_) {
38714 				{
38715 				{
38716 				setState(5365);
38717 				match(COMMA_);
38718 				setState(5366);
38719 				orderByItem();
38720 				}
38721 				}
38722 				setState(5371);
38723 				_errHandler.sync(this);
38724 				_la = _input.LA(1);
38725 			}
38726 			}
38727 		}
38728 		catch (RecognitionException re) {
38729 			_localctx.exception = re;
38730 			_errHandler.reportError(this, re);
38731 			_errHandler.recover(this, re);
38732 		}
38733 		finally {
38734 			exitRule();
38735 		}
38736 		return _localctx;
38737 	}
38738 
38739 	public static class HavingClauseContext extends ParserRuleContext {
38740 		public TerminalNode HAVING() { return getToken(SQLServerStatementParser.HAVING, 0); }
38741 		public ExprContext expr() {
38742 			return getRuleContext(ExprContext.class,0);
38743 		}
38744 		public HavingClauseContext(ParserRuleContext parent, int invokingState) {
38745 			super(parent, invokingState);
38746 		}
38747 		@Override public int getRuleIndex() { return RULE_havingClause; }
38748 		@Override
38749 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38750 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHavingClause(this);
38751 			else return visitor.visitChildren(this);
38752 		}
38753 	}
38754 
38755 	public final HavingClauseContext havingClause() throws RecognitionException {
38756 		HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState());
38757 		enterRule(_localctx, 750, RULE_havingClause);
38758 		try {
38759 			enterOuterAlt(_localctx, 1);
38760 			{
38761 			setState(5372);
38762 			match(HAVING);
38763 			setState(5373);
38764 			expr(0);
38765 			}
38766 		}
38767 		catch (RecognitionException re) {
38768 			_localctx.exception = re;
38769 			_errHandler.reportError(this, re);
38770 			_errHandler.recover(this, re);
38771 		}
38772 		finally {
38773 			exitRule();
38774 		}
38775 		return _localctx;
38776 	}
38777 
38778 	public static class SubqueryContext extends ParserRuleContext {
38779 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
38780 		public AggregationClauseContext aggregationClause() {
38781 			return getRuleContext(AggregationClauseContext.class,0);
38782 		}
38783 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
38784 		public SubqueryContext(ParserRuleContext parent, int invokingState) {
38785 			super(parent, invokingState);
38786 		}
38787 		@Override public int getRuleIndex() { return RULE_subquery; }
38788 		@Override
38789 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38790 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSubquery(this);
38791 			else return visitor.visitChildren(this);
38792 		}
38793 	}
38794 
38795 	public final SubqueryContext subquery() throws RecognitionException {
38796 		SubqueryContext _localctx = new SubqueryContext(_ctx, getState());
38797 		enterRule(_localctx, 752, RULE_subquery);
38798 		try {
38799 			enterOuterAlt(_localctx, 1);
38800 			{
38801 			setState(5375);
38802 			match(LP_);
38803 			setState(5376);
38804 			aggregationClause();
38805 			setState(5377);
38806 			match(RP_);
38807 			}
38808 		}
38809 		catch (RecognitionException re) {
38810 			_localctx.exception = re;
38811 			_errHandler.reportError(this, re);
38812 			_errHandler.recover(this, re);
38813 		}
38814 		finally {
38815 			exitRule();
38816 		}
38817 		return _localctx;
38818 	}
38819 
38820 	public static class WithClauseContext extends ParserRuleContext {
38821 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
38822 		public CteClauseSetContext cteClauseSet() {
38823 			return getRuleContext(CteClauseSetContext.class,0);
38824 		}
38825 		public WithClauseContext(ParserRuleContext parent, int invokingState) {
38826 			super(parent, invokingState);
38827 		}
38828 		@Override public int getRuleIndex() { return RULE_withClause; }
38829 		@Override
38830 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38831 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithClause(this);
38832 			else return visitor.visitChildren(this);
38833 		}
38834 	}
38835 
38836 	public final WithClauseContext withClause() throws RecognitionException {
38837 		WithClauseContext _localctx = new WithClauseContext(_ctx, getState());
38838 		enterRule(_localctx, 754, RULE_withClause);
38839 		try {
38840 			enterOuterAlt(_localctx, 1);
38841 			{
38842 			setState(5379);
38843 			match(WITH);
38844 			setState(5380);
38845 			cteClauseSet();
38846 			}
38847 		}
38848 		catch (RecognitionException re) {
38849 			_localctx.exception = re;
38850 			_errHandler.reportError(this, re);
38851 			_errHandler.recover(this, re);
38852 		}
38853 		finally {
38854 			exitRule();
38855 		}
38856 		return _localctx;
38857 	}
38858 
38859 	public static class CteClauseSetContext extends ParserRuleContext {
38860 		public List<CteClauseContext> cteClause() {
38861 			return getRuleContexts(CteClauseContext.class);
38862 		}
38863 		public CteClauseContext cteClause(int i) {
38864 			return getRuleContext(CteClauseContext.class,i);
38865 		}
38866 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
38867 		public TerminalNode COMMA_(int i) {
38868 			return getToken(SQLServerStatementParser.COMMA_, i);
38869 		}
38870 		public CteClauseSetContext(ParserRuleContext parent, int invokingState) {
38871 			super(parent, invokingState);
38872 		}
38873 		@Override public int getRuleIndex() { return RULE_cteClauseSet; }
38874 		@Override
38875 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38876 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCteClauseSet(this);
38877 			else return visitor.visitChildren(this);
38878 		}
38879 	}
38880 
38881 	public final CteClauseSetContext cteClauseSet() throws RecognitionException {
38882 		CteClauseSetContext _localctx = new CteClauseSetContext(_ctx, getState());
38883 		enterRule(_localctx, 756, RULE_cteClauseSet);
38884 		int _la;
38885 		try {
38886 			enterOuterAlt(_localctx, 1);
38887 			{
38888 			setState(5382);
38889 			cteClause();
38890 			setState(5387);
38891 			_errHandler.sync(this);
38892 			_la = _input.LA(1);
38893 			while (_la==COMMA_) {
38894 				{
38895 				{
38896 				setState(5383);
38897 				match(COMMA_);
38898 				setState(5384);
38899 				cteClause();
38900 				}
38901 				}
38902 				setState(5389);
38903 				_errHandler.sync(this);
38904 				_la = _input.LA(1);
38905 			}
38906 			}
38907 		}
38908 		catch (RecognitionException re) {
38909 			_localctx.exception = re;
38910 			_errHandler.reportError(this, re);
38911 			_errHandler.recover(this, re);
38912 		}
38913 		finally {
38914 			exitRule();
38915 		}
38916 		return _localctx;
38917 	}
38918 
38919 	public static class CteClauseContext extends ParserRuleContext {
38920 		public IdentifierContext identifier() {
38921 			return getRuleContext(IdentifierContext.class,0);
38922 		}
38923 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
38924 		public SubqueryContext subquery() {
38925 			return getRuleContext(SubqueryContext.class,0);
38926 		}
38927 		public ColumnNamesContext columnNames() {
38928 			return getRuleContext(ColumnNamesContext.class,0);
38929 		}
38930 		public CteClauseContext(ParserRuleContext parent, int invokingState) {
38931 			super(parent, invokingState);
38932 		}
38933 		@Override public int getRuleIndex() { return RULE_cteClause; }
38934 		@Override
38935 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38936 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCteClause(this);
38937 			else return visitor.visitChildren(this);
38938 		}
38939 	}
38940 
38941 	public final CteClauseContext cteClause() throws RecognitionException {
38942 		CteClauseContext _localctx = new CteClauseContext(_ctx, getState());
38943 		enterRule(_localctx, 758, RULE_cteClause);
38944 		int _la;
38945 		try {
38946 			enterOuterAlt(_localctx, 1);
38947 			{
38948 			setState(5390);
38949 			identifier();
38950 			setState(5392);
38951 			_errHandler.sync(this);
38952 			_la = _input.LA(1);
38953 			if (_la==LP_) {
38954 				{
38955 				setState(5391);
38956 				columnNames();
38957 				}
38958 			}
38959 
38960 			setState(5394);
38961 			match(AS);
38962 			setState(5395);
38963 			subquery();
38964 			}
38965 		}
38966 		catch (RecognitionException re) {
38967 			_localctx.exception = re;
38968 			_errHandler.reportError(this, re);
38969 			_errHandler.recover(this, re);
38970 		}
38971 		finally {
38972 			exitRule();
38973 		}
38974 		return _localctx;
38975 	}
38976 
38977 	public static class OutputClauseContext extends ParserRuleContext {
38978 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
38979 		public OutputWithColumnsContext outputWithColumns() {
38980 			return getRuleContext(OutputWithColumnsContext.class,0);
38981 		}
38982 		public OutputWithAateriskContext outputWithAaterisk() {
38983 			return getRuleContext(OutputWithAateriskContext.class,0);
38984 		}
38985 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
38986 		public OutputTableNameContext outputTableName() {
38987 			return getRuleContext(OutputTableNameContext.class,0);
38988 		}
38989 		public ColumnNamesContext columnNames() {
38990 			return getRuleContext(ColumnNamesContext.class,0);
38991 		}
38992 		public OutputClauseContext(ParserRuleContext parent, int invokingState) {
38993 			super(parent, invokingState);
38994 		}
38995 		@Override public int getRuleIndex() { return RULE_outputClause; }
38996 		@Override
38997 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38998 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputClause(this);
38999 			else return visitor.visitChildren(this);
39000 		}
39001 	}
39002 
39003 	public final OutputClauseContext outputClause() throws RecognitionException {
39004 		OutputClauseContext _localctx = new OutputClauseContext(_ctx, getState());
39005 		enterRule(_localctx, 760, RULE_outputClause);
39006 		int _la;
39007 		try {
39008 			enterOuterAlt(_localctx, 1);
39009 			{
39010 			setState(5397);
39011 			match(OUTPUT);
39012 			setState(5400);
39013 			_errHandler.sync(this);
39014 			switch ( getInterpreter().adaptivePredict(_input,622,_ctx) ) {
39015 			case 1:
39016 				{
39017 				setState(5398);
39018 				outputWithColumns();
39019 				}
39020 				break;
39021 			case 2:
39022 				{
39023 				setState(5399);
39024 				outputWithAaterisk();
39025 				}
39026 				break;
39027 			}
39028 			setState(5407);
39029 			_errHandler.sync(this);
39030 			_la = _input.LA(1);
39031 			if (_la==INTO) {
39032 				{
39033 				setState(5402);
39034 				match(INTO);
39035 				setState(5403);
39036 				outputTableName();
39037 				setState(5405);
39038 				_errHandler.sync(this);
39039 				_la = _input.LA(1);
39040 				if (_la==LP_) {
39041 					{
39042 					setState(5404);
39043 					columnNames();
39044 					}
39045 				}
39046 
39047 				}
39048 			}
39049 
39050 			}
39051 		}
39052 		catch (RecognitionException re) {
39053 			_localctx.exception = re;
39054 			_errHandler.reportError(this, re);
39055 			_errHandler.recover(this, re);
39056 		}
39057 		finally {
39058 			exitRule();
39059 		}
39060 		return _localctx;
39061 	}
39062 
39063 	public static class OutputWithColumnsContext extends ParserRuleContext {
39064 		public List<OutputWithColumnContext> outputWithColumn() {
39065 			return getRuleContexts(OutputWithColumnContext.class);
39066 		}
39067 		public OutputWithColumnContext outputWithColumn(int i) {
39068 			return getRuleContext(OutputWithColumnContext.class,i);
39069 		}
39070 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39071 		public TerminalNode COMMA_(int i) {
39072 			return getToken(SQLServerStatementParser.COMMA_, i);
39073 		}
39074 		public OutputWithColumnsContext(ParserRuleContext parent, int invokingState) {
39075 			super(parent, invokingState);
39076 		}
39077 		@Override public int getRuleIndex() { return RULE_outputWithColumns; }
39078 		@Override
39079 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39080 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithColumns(this);
39081 			else return visitor.visitChildren(this);
39082 		}
39083 	}
39084 
39085 	public final OutputWithColumnsContext outputWithColumns() throws RecognitionException {
39086 		OutputWithColumnsContext _localctx = new OutputWithColumnsContext(_ctx, getState());
39087 		enterRule(_localctx, 762, RULE_outputWithColumns);
39088 		int _la;
39089 		try {
39090 			enterOuterAlt(_localctx, 1);
39091 			{
39092 			setState(5409);
39093 			outputWithColumn();
39094 			setState(5414);
39095 			_errHandler.sync(this);
39096 			_la = _input.LA(1);
39097 			while (_la==COMMA_) {
39098 				{
39099 				{
39100 				setState(5410);
39101 				match(COMMA_);
39102 				setState(5411);
39103 				outputWithColumn();
39104 				}
39105 				}
39106 				setState(5416);
39107 				_errHandler.sync(this);
39108 				_la = _input.LA(1);
39109 			}
39110 			}
39111 		}
39112 		catch (RecognitionException re) {
39113 			_localctx.exception = re;
39114 			_errHandler.reportError(this, re);
39115 			_errHandler.recover(this, re);
39116 		}
39117 		finally {
39118 			exitRule();
39119 		}
39120 		return _localctx;
39121 	}
39122 
39123 	public static class OutputWithColumnContext extends ParserRuleContext {
39124 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
39125 		public NameContext name() {
39126 			return getRuleContext(NameContext.class,0);
39127 		}
39128 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
39129 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
39130 		public AliasContext alias() {
39131 			return getRuleContext(AliasContext.class,0);
39132 		}
39133 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
39134 		public OutputWithColumnContext(ParserRuleContext parent, int invokingState) {
39135 			super(parent, invokingState);
39136 		}
39137 		@Override public int getRuleIndex() { return RULE_outputWithColumn; }
39138 		@Override
39139 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39140 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithColumn(this);
39141 			else return visitor.visitChildren(this);
39142 		}
39143 	}
39144 
39145 	public final OutputWithColumnContext outputWithColumn() throws RecognitionException {
39146 		OutputWithColumnContext _localctx = new OutputWithColumnContext(_ctx, getState());
39147 		enterRule(_localctx, 764, RULE_outputWithColumn);
39148 		int _la;
39149 		try {
39150 			enterOuterAlt(_localctx, 1);
39151 			{
39152 			setState(5417);
39153 			_la = _input.LA(1);
39154 			if ( !(_la==INSERTED || _la==DELETED) ) {
39155 			_errHandler.recoverInline(this);
39156 			}
39157 			else {
39158 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39159 				_errHandler.reportMatch(this);
39160 				consume();
39161 			}
39162 			setState(5418);
39163 			match(DOT_);
39164 			setState(5419);
39165 			name();
39166 			setState(5424);
39167 			_errHandler.sync(this);
39168 			switch ( getInterpreter().adaptivePredict(_input,627,_ctx) ) {
39169 			case 1:
39170 				{
39171 				setState(5421);
39172 				_errHandler.sync(this);
39173 				_la = _input.LA(1);
39174 				if (_la==AS) {
39175 					{
39176 					setState(5420);
39177 					match(AS);
39178 					}
39179 				}
39180 
39181 				setState(5423);
39182 				alias();
39183 				}
39184 				break;
39185 			}
39186 			}
39187 		}
39188 		catch (RecognitionException re) {
39189 			_localctx.exception = re;
39190 			_errHandler.reportError(this, re);
39191 			_errHandler.recover(this, re);
39192 		}
39193 		finally {
39194 			exitRule();
39195 		}
39196 		return _localctx;
39197 	}
39198 
39199 	public static class OutputWithAateriskContext extends ParserRuleContext {
39200 		public TerminalNode DOT_ASTERISK_() { return getToken(SQLServerStatementParser.DOT_ASTERISK_, 0); }
39201 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
39202 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
39203 		public OutputWithAateriskContext(ParserRuleContext parent, int invokingState) {
39204 			super(parent, invokingState);
39205 		}
39206 		@Override public int getRuleIndex() { return RULE_outputWithAaterisk; }
39207 		@Override
39208 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39209 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithAaterisk(this);
39210 			else return visitor.visitChildren(this);
39211 		}
39212 	}
39213 
39214 	public final OutputWithAateriskContext outputWithAaterisk() throws RecognitionException {
39215 		OutputWithAateriskContext _localctx = new OutputWithAateriskContext(_ctx, getState());
39216 		enterRule(_localctx, 766, RULE_outputWithAaterisk);
39217 		int _la;
39218 		try {
39219 			enterOuterAlt(_localctx, 1);
39220 			{
39221 			setState(5426);
39222 			_la = _input.LA(1);
39223 			if ( !(_la==INSERTED || _la==DELETED) ) {
39224 			_errHandler.recoverInline(this);
39225 			}
39226 			else {
39227 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39228 				_errHandler.reportMatch(this);
39229 				consume();
39230 			}
39231 			setState(5427);
39232 			match(DOT_ASTERISK_);
39233 			}
39234 		}
39235 		catch (RecognitionException re) {
39236 			_localctx.exception = re;
39237 			_errHandler.reportError(this, re);
39238 			_errHandler.recover(this, re);
39239 		}
39240 		finally {
39241 			exitRule();
39242 		}
39243 		return _localctx;
39244 	}
39245 
39246 	public static class OutputTableNameContext extends ParserRuleContext {
39247 		public TerminalNode AT_() { return getToken(SQLServerStatementParser.AT_, 0); }
39248 		public NameContext name() {
39249 			return getRuleContext(NameContext.class,0);
39250 		}
39251 		public TableNameContext tableName() {
39252 			return getRuleContext(TableNameContext.class,0);
39253 		}
39254 		public OutputTableNameContext(ParserRuleContext parent, int invokingState) {
39255 			super(parent, invokingState);
39256 		}
39257 		@Override public int getRuleIndex() { return RULE_outputTableName; }
39258 		@Override
39259 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39260 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputTableName(this);
39261 			else return visitor.visitChildren(this);
39262 		}
39263 	}
39264 
39265 	public final OutputTableNameContext outputTableName() throws RecognitionException {
39266 		OutputTableNameContext _localctx = new OutputTableNameContext(_ctx, getState());
39267 		enterRule(_localctx, 768, RULE_outputTableName);
39268 		try {
39269 			setState(5432);
39270 			_errHandler.sync(this);
39271 			switch (_input.LA(1)) {
39272 			case AT_:
39273 				enterOuterAlt(_localctx, 1);
39274 				{
39275 				{
39276 				setState(5429);
39277 				match(AT_);
39278 				setState(5430);
39279 				name();
39280 				}
39281 				}
39282 				break;
39283 			case TRUNCATE:
39284 			case SCHEMA:
39285 			case COLUMNS:
39286 			case PRECISION:
39287 			case FUNCTION:
39288 			case TRIGGER:
39289 			case CAST:
39290 			case SUBSTRING:
39291 			case OFF:
39292 			case GROUP:
39293 			case LIMIT:
39294 			case OFFSET:
39295 			case SAVEPOINT:
39296 			case BOOLEAN:
39297 			case ARRAY:
39298 			case DATE:
39299 			case LOCALTIME:
39300 			case LOCALTIMESTAMP:
39301 			case QUARTER:
39302 			case MONTH:
39303 			case WEEK:
39304 			case DAY:
39305 			case SECOND:
39306 			case MICROSECOND:
39307 			case MAX:
39308 			case MIN:
39309 			case SUM:
39310 			case COUNT:
39311 			case AVG:
39312 			case ENABLE:
39313 			case DISABLE:
39314 			case INSTANCE:
39315 			case DO:
39316 			case DEFINER:
39317 			case SQL:
39318 			case CASCADED:
39319 			case LOCAL:
39320 			case NEXT:
39321 			case NAME:
39322 			case INTEGER:
39323 			case TYPE:
39324 			case TEXT:
39325 			case VIEWS:
39326 			case READ_ONLY:
39327 			case DATABASE:
39328 			case RETURNS:
39329 			case DATEPART:
39330 			case PASSWORD:
39331 			case BINARY:
39332 			case HIDDEN_:
39333 			case MOD:
39334 			case PARTITION:
39335 			case PARTITIONS:
39336 			case TOP:
39337 			case ROW:
39338 			case ROWS:
39339 			case XOR:
39340 			case ALWAYS:
39341 			case ROLE:
39342 			case START:
39343 			case ALGORITHM:
39344 			case AUTO:
39345 			case BLOCKERS:
39346 			case CLUSTERED:
39347 			case NONCLUSTERED:
39348 			case COLUMNSTORE:
39349 			case CONTENT:
39350 			case YEARS:
39351 			case MONTHS:
39352 			case WEEKS:
39353 			case DAYS:
39354 			case MINUTES:
39355 			case DENY:
39356 			case DETERMINISTIC:
39357 			case DISTRIBUTION:
39358 			case DOCUMENT:
39359 			case DURABILITY:
39360 			case ENCRYPTED:
39361 			case FILESTREAM:
39362 			case FILETABLE:
39363 			case FILLFACTOR:
39364 			case FOLLOWING:
39365 			case HASH:
39366 			case HEAP:
39367 			case INBOUND:
39368 			case OUTBOUND:
39369 			case UNBOUNDED:
39370 			case INFINITE:
39371 			case LOGIN:
39372 			case MASKED:
39373 			case MAXDOP:
39374 			case MOVE:
39375 			case NOCHECK:
39376 			case OBJECT:
39377 			case ONLINE:
39378 			case OVER:
39379 			case PAGE:
39380 			case PAUSED:
39381 			case PERIOD:
39382 			case PERSISTED:
39383 			case PRECEDING:
39384 			case RANDOMIZED:
39385 			case RANGE:
39386 			case REBUILD:
39387 			case REPLICATE:
39388 			case REPLICATION:
39389 			case RESUMABLE:
39390 			case ROWGUIDCOL:
39391 			case SAVE:
39392 			case SELF:
39393 			case SPARSE:
39394 			case SWITCH:
39395 			case TRAN:
39396 			case TRANCOUNT:
39397 			case CONTROL:
39398 			case CONCAT:
39399 			case TAKE:
39400 			case OWNERSHIP:
39401 			case DEFINITION:
39402 			case APPLICATION:
39403 			case ASSEMBLY:
39404 			case SYMMETRIC:
39405 			case ASYMMETRIC:
39406 			case SERVER:
39407 			case RECEIVE:
39408 			case CHANGE:
39409 			case TRACE:
39410 			case TRACKING:
39411 			case RESOURCES:
39412 			case SETTINGS:
39413 			case STATE:
39414 			case AVAILABILITY:
39415 			case CREDENTIAL:
39416 			case ENDPOINT:
39417 			case EVENT:
39418 			case NOTIFICATION:
39419 			case LINKED:
39420 			case AUDIT:
39421 			case DDL:
39422 			case XML:
39423 			case IMPERSONATE:
39424 			case SECURABLES:
39425 			case AUTHENTICATE:
39426 			case EXTERNAL:
39427 			case ACCESS:
39428 			case ADMINISTER:
39429 			case BULK:
39430 			case OPERATIONS:
39431 			case UNSAFE:
39432 			case SHUTDOWN:
39433 			case SCOPED:
39434 			case CONFIGURATION:
39435 			case DATASPACE:
39436 			case SERVICE:
39437 			case CERTIFICATE:
39438 			case CONTRACT:
39439 			case ENCRYPTION:
39440 			case MASTER:
39441 			case DATA:
39442 			case SOURCE:
39443 			case FILE:
39444 			case FORMAT:
39445 			case LIBRARY:
39446 			case FULLTEXT:
39447 			case MASK:
39448 			case UNMASK:
39449 			case MESSAGE:
39450 			case REMOTE:
39451 			case BINDING:
39452 			case ROUTE:
39453 			case SECURITY:
39454 			case POLICY:
39455 			case AGGREGATE:
39456 			case QUEUE:
39457 			case RULE:
39458 			case SYNONYM:
39459 			case COLLECTION:
39460 			case SCRIPT:
39461 			case KILL:
39462 			case BACKUP:
39463 			case LOG:
39464 			case SHOWPLAN:
39465 			case SUBSCRIBE:
39466 			case QUERY:
39467 			case NOTIFICATIONS:
39468 			case CHECKPOINT:
39469 			case SEQUENCE:
39470 			case ABORT_AFTER_WAIT:
39471 			case ALLOW_PAGE_LOCKS:
39472 			case ALLOW_ROW_LOCKS:
39473 			case ALL_SPARSE_COLUMNS:
39474 			case BUCKET_COUNT:
39475 			case COLUMNSTORE_ARCHIVE:
39476 			case COLUMN_ENCRYPTION_KEY:
39477 			case COLUMN_SET:
39478 			case COMPRESSION_DELAY:
39479 			case DATABASE_DEAULT:
39480 			case DATA_COMPRESSION:
39481 			case DATA_CONSISTENCY_CHECK:
39482 			case ENCRYPTION_TYPE:
39483 			case SYSTEM_TIME:
39484 			case SYSTEM_VERSIONING:
39485 			case TEXTIMAGE_ON:
39486 			case WAIT_AT_LOW_PRIORITY:
39487 			case STATISTICS_INCREMENTAL:
39488 			case STATISTICS_NORECOMPUTE:
39489 			case ROUND_ROBIN:
39490 			case SCHEMA_AND_DATA:
39491 			case SCHEMA_ONLY:
39492 			case SORT_IN_TEMPDB:
39493 			case IGNORE_DUP_KEY:
39494 			case IMPLICIT_TRANSACTIONS:
39495 			case MAX_DURATION:
39496 			case MEMORY_OPTIMIZED:
39497 			case MIGRATION_STATE:
39498 			case PAD_INDEX:
39499 			case REMOTE_DATA_ARCHIVE:
39500 			case FILESTREAM_ON:
39501 			case FILETABLE_COLLATE_FILENAME:
39502 			case FILETABLE_DIRECTORY:
39503 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
39504 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
39505 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
39506 			case FILTER_PREDICATE:
39507 			case HISTORY_RETENTION_PERIOD:
39508 			case HISTORY_TABLE:
39509 			case LOCK_ESCALATION:
39510 			case DROP_EXISTING:
39511 			case ROW_NUMBER:
39512 			case FIRST:
39513 			case DATETIME2:
39514 			case OUTPUT:
39515 			case INSERTED:
39516 			case DELETED:
39517 			case FILENAME:
39518 			case SIZE:
39519 			case MAXSIZE:
39520 			case FILEGROWTH:
39521 			case UNLIMITED:
39522 			case KB:
39523 			case MB:
39524 			case GB:
39525 			case TB:
39526 			case CONTAINS:
39527 			case MEMORY_OPTIMIZED_DATA:
39528 			case FILEGROUP:
39529 			case NON_TRANSACTED_ACCESS:
39530 			case DB_CHAINING:
39531 			case TRUSTWORTHY:
39532 			case FORWARD_ONLY:
39533 			case KEYSET:
39534 			case FAST_FORWARD:
39535 			case SCROLL_LOCKS:
39536 			case OPTIMISTIC:
39537 			case TYPE_WARNING:
39538 			case SCHEMABINDING:
39539 			case CALLER:
39540 			case OWNER:
39541 			case SNAPSHOT:
39542 			case REPEATABLE:
39543 			case SERIALIZABLE:
39544 			case NATIVE_COMPILATION:
39545 			case VIEW_METADATA:
39546 			case INSTEAD:
39547 			case APPEND:
39548 			case INCREMENT:
39549 			case CACHE:
39550 			case MINVALUE:
39551 			case MAXVALUE:
39552 			case RESTART:
39553 			case LOB_COMPACTION:
39554 			case COMPRESS_ALL_ROW_GROUPS:
39555 			case REORGANIZE:
39556 			case RESUME:
39557 			case PAUSE:
39558 			case ABORT:
39559 			case ACCELERATED_DATABASE_RECOVERY:
39560 			case PERSISTENT_VERSION_STORE_FILEGROUP:
39561 			case IMMEDIATE:
39562 			case NO_WAIT:
39563 			case TARGET_RECOVERY_TIME:
39564 			case SECONDS:
39565 			case HONOR_BROKER_PRIORITY:
39566 			case ERROR_BROKER_CONVERSATIONS:
39567 			case NEW_BROKER:
39568 			case DISABLE_BROKER:
39569 			case ENABLE_BROKER:
39570 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
39571 			case READ_COMMITTED_SNAPSHOT:
39572 			case ALLOW_SNAPSHOT_ISOLATION:
39573 			case RECURSIVE_TRIGGERS:
39574 			case QUOTED_IDENTIFIER:
39575 			case NUMERIC_ROUNDABORT:
39576 			case CONCAT_NULL_YIELDS_NULL:
39577 			case COMPATIBILITY_LEVEL:
39578 			case ARITHABORT:
39579 			case ANSI_WARNINGS:
39580 			case ANSI_PADDING:
39581 			case ANSI_NULLS:
39582 			case ANSI_NULL_DEFAULT:
39583 			case PAGE_VERIFY:
39584 			case CHECKSUM:
39585 			case TORN_PAGE_DETECTION:
39586 			case BULK_LOGGED:
39587 			case RECOVERY:
39588 			case TOTAL_EXECUTION_CPU_TIME_MS:
39589 			case TOTAL_COMPILE_CPU_TIME_MS:
39590 			case STALE_CAPTURE_POLICY_THRESHOLD:
39591 			case EXECUTION_COUNT:
39592 			case QUERY_CAPTURE_POLICY:
39593 			case WAIT_STATS_CAPTURE_MODE:
39594 			case MAX_PLANS_PER_QUERY:
39595 			case QUERY_CAPTURE_MODE:
39596 			case SIZE_BASED_CLEANUP_MODE:
39597 			case INTERVAL_LENGTH_MINUTES:
39598 			case MAX_STORAGE_SIZE_MB:
39599 			case DATA_FLUSH_INTERVAL_SECONDS:
39600 			case CLEANUP_POLICY:
39601 			case CUSTOM:
39602 			case STALE_QUERY_THRESHOLD_DAYS:
39603 			case OPERATION_MODE:
39604 			case QUERY_STORE:
39605 			case CURSOR_DEFAULT:
39606 			case GLOBAL:
39607 			case CURSOR_CLOSE_ON_COMMIT:
39608 			case HOURS:
39609 			case CHANGE_RETENTION:
39610 			case AUTO_CLEANUP:
39611 			case CHANGE_TRACKING:
39612 			case AUTOMATIC_TUNING:
39613 			case FORCE_LAST_GOOD_PLAN:
39614 			case AUTO_UPDATE_STATISTICS_ASYNC:
39615 			case AUTO_UPDATE_STATISTICS:
39616 			case AUTO_SHRINK:
39617 			case AUTO_CREATE_STATISTICS:
39618 			case INCREMENTAL:
39619 			case AUTO_CLOSE:
39620 			case DATA_RETENTION:
39621 			case TEMPORAL_HISTORY_RETENTION:
39622 			case EDITION:
39623 			case MIXED_PAGE_ALLOCATION:
39624 			case DISABLED:
39625 			case ALLOWED:
39626 			case HADR:
39627 			case MULTI_USER:
39628 			case RESTRICTED_USER:
39629 			case SINGLE_USER:
39630 			case OFFLINE:
39631 			case EMERGENCY:
39632 			case SUSPEND:
39633 			case DATE_CORRELATION_OPTIMIZATION:
39634 			case ELASTIC_POOL:
39635 			case SERVICE_OBJECTIVE:
39636 			case DATABASE_NAME:
39637 			case ALLOW_CONNECTIONS:
39638 			case GEO:
39639 			case NAMED:
39640 			case DATEFIRST:
39641 			case BACKUP_STORAGE_REDUNDANCY:
39642 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
39643 			case SECONDARY:
39644 			case FAILOVER:
39645 			case DEFAULT_FULLTEXT_LANGUAGE:
39646 			case DEFAULT_LANGUAGE:
39647 			case INLINE:
39648 			case NESTED_TRIGGERS:
39649 			case TRANSFORM_NOISE_WORDS:
39650 			case TWO_DIGIT_YEAR_CUTOFF:
39651 			case PERSISTENT_LOG_BUFFER:
39652 			case DIRECTORY_NAME:
39653 			case DATEFORMAT:
39654 			case DELAYED_DURABILITY:
39655 			case AUTHORIZATION:
39656 			case TRANSFER:
39657 			case PROVIDER:
39658 			case SEARCH:
39659 			case MEMBER:
39660 			case IDENTIFIER_:
39661 			case DELIMITED_IDENTIFIER_:
39662 				enterOuterAlt(_localctx, 2);
39663 				{
39664 				setState(5431);
39665 				tableName();
39666 				}
39667 				break;
39668 			default:
39669 				throw new NoViableAltException(this);
39670 			}
39671 		}
39672 		catch (RecognitionException re) {
39673 			_localctx.exception = re;
39674 			_errHandler.reportError(this, re);
39675 			_errHandler.recover(this, re);
39676 		}
39677 		finally {
39678 			exitRule();
39679 		}
39680 		return _localctx;
39681 	}
39682 
39683 	public static class QueryHintContext extends ParserRuleContext {
39684 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
39685 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
39686 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
39687 		public TerminalNode UNION() { return getToken(SQLServerStatementParser.UNION, 0); }
39688 		public TerminalNode CONCAT() { return getToken(SQLServerStatementParser.CONCAT, 0); }
39689 		public TerminalNode MERGE() { return getToken(SQLServerStatementParser.MERGE, 0); }
39690 		public TerminalNode JOIN() { return getToken(SQLServerStatementParser.JOIN, 0); }
39691 		public TerminalNode LOOP() { return getToken(SQLServerStatementParser.LOOP, 0); }
39692 		public TerminalNode EXPAND() { return getToken(SQLServerStatementParser.EXPAND, 0); }
39693 		public TerminalNode VIEWS() { return getToken(SQLServerStatementParser.VIEWS, 0); }
39694 		public TerminalNode FAST() { return getToken(SQLServerStatementParser.FAST, 0); }
39695 		public TerminalNode INT_NUM_() { return getToken(SQLServerStatementParser.INT_NUM_, 0); }
39696 		public TerminalNode FORCE() { return getToken(SQLServerStatementParser.FORCE, 0); }
39697 		public TerminalNode EXTERNALPUSHDOWN() { return getToken(SQLServerStatementParser.EXTERNALPUSHDOWN, 0); }
39698 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
39699 		public TerminalNode SCALEOUTEXECUTION() { return getToken(SQLServerStatementParser.SCALEOUTEXECUTION, 0); }
39700 		public TerminalNode IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX() { return getToken(SQLServerStatementParser.IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX, 0); }
39701 		public TerminalNode KEEP() { return getToken(SQLServerStatementParser.KEEP, 0); }
39702 		public TerminalNode PLAN() { return getToken(SQLServerStatementParser.PLAN, 0); }
39703 		public TerminalNode KEEPFIXED() { return getToken(SQLServerStatementParser.KEEPFIXED, 0); }
39704 		public TerminalNode MAX_GRANT_PERCENT() { return getToken(SQLServerStatementParser.MAX_GRANT_PERCENT, 0); }
39705 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
39706 		public TerminalNode EQ_(int i) {
39707 			return getToken(SQLServerStatementParser.EQ_, i);
39708 		}
39709 		public TerminalNode DECIMAL_NUM_() { return getToken(SQLServerStatementParser.DECIMAL_NUM_, 0); }
39710 		public TerminalNode MIN_GRANT_PERCENT() { return getToken(SQLServerStatementParser.MIN_GRANT_PERCENT, 0); }
39711 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
39712 		public TerminalNode MAXRECURSION() { return getToken(SQLServerStatementParser.MAXRECURSION, 0); }
39713 		public TerminalNode NO_PERFORMANCE_SPOOL() { return getToken(SQLServerStatementParser.NO_PERFORMANCE_SPOOL, 0); }
39714 		public TerminalNode OPTIMIZE() { return getToken(SQLServerStatementParser.OPTIMIZE, 0); }
39715 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
39716 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
39717 		public TerminalNode AT_() { return getToken(SQLServerStatementParser.AT_, 0); }
39718 		public NameContext name() {
39719 			return getRuleContext(NameContext.class,0);
39720 		}
39721 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
39722 		public List<TerminalNode> UNKNOWN() { return getTokens(SQLServerStatementParser.UNKNOWN); }
39723 		public TerminalNode UNKNOWN(int i) {
39724 			return getToken(SQLServerStatementParser.UNKNOWN, i);
39725 		}
39726 		public List<IdentifierContext> identifier() {
39727 			return getRuleContexts(IdentifierContext.class);
39728 		}
39729 		public IdentifierContext identifier(int i) {
39730 			return getRuleContext(IdentifierContext.class,i);
39731 		}
39732 		public TerminalNode PARAMETERIZATION() { return getToken(SQLServerStatementParser.PARAMETERIZATION, 0); }
39733 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
39734 		public TerminalNode FORCED() { return getToken(SQLServerStatementParser.FORCED, 0); }
39735 		public TerminalNode QUERYTRACEON() { return getToken(SQLServerStatementParser.QUERYTRACEON, 0); }
39736 		public TerminalNode RECOMPILE() { return getToken(SQLServerStatementParser.RECOMPILE, 0); }
39737 		public TerminalNode ROBUST() { return getToken(SQLServerStatementParser.ROBUST, 0); }
39738 		public TerminalNode USE() { return getToken(SQLServerStatementParser.USE, 0); }
39739 		public TerminalNode HINT() { return getToken(SQLServerStatementParser.HINT, 0); }
39740 		public List<UseHitNameContext> useHitName() {
39741 			return getRuleContexts(UseHitNameContext.class);
39742 		}
39743 		public UseHitNameContext useHitName(int i) {
39744 			return getRuleContext(UseHitNameContext.class,i);
39745 		}
39746 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
39747 		public QueryHintContext(ParserRuleContext parent, int invokingState) {
39748 			super(parent, invokingState);
39749 		}
39750 		@Override public int getRuleIndex() { return RULE_queryHint; }
39751 		@Override
39752 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39753 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryHint(this);
39754 			else return visitor.visitChildren(this);
39755 		}
39756 	}
39757 
39758 	public final QueryHintContext queryHint() throws RecognitionException {
39759 		QueryHintContext _localctx = new QueryHintContext(_ctx, getState());
39760 		enterRule(_localctx, 770, RULE_queryHint);
39761 		int _la;
39762 		try {
39763 			setState(5504);
39764 			_errHandler.sync(this);
39765 			switch ( getInterpreter().adaptivePredict(_input,632,_ctx) ) {
39766 			case 1:
39767 				enterOuterAlt(_localctx, 1);
39768 				{
39769 				setState(5434);
39770 				_la = _input.LA(1);
39771 				if ( !(_la==ORDER || _la==HASH) ) {
39772 				_errHandler.recoverInline(this);
39773 				}
39774 				else {
39775 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39776 					_errHandler.reportMatch(this);
39777 					consume();
39778 				}
39779 				setState(5435);
39780 				match(GROUP);
39781 				}
39782 				break;
39783 			case 2:
39784 				enterOuterAlt(_localctx, 2);
39785 				{
39786 				setState(5436);
39787 				_la = _input.LA(1);
39788 				if ( !(_la==MERGE || _la==HASH || _la==CONCAT) ) {
39789 				_errHandler.recoverInline(this);
39790 				}
39791 				else {
39792 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39793 					_errHandler.reportMatch(this);
39794 					consume();
39795 				}
39796 				setState(5437);
39797 				match(UNION);
39798 				}
39799 				break;
39800 			case 3:
39801 				enterOuterAlt(_localctx, 3);
39802 				{
39803 				setState(5438);
39804 				_la = _input.LA(1);
39805 				if ( !(_la==MERGE || _la==LOOP || _la==HASH) ) {
39806 				_errHandler.recoverInline(this);
39807 				}
39808 				else {
39809 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39810 					_errHandler.reportMatch(this);
39811 					consume();
39812 				}
39813 				setState(5439);
39814 				match(JOIN);
39815 				}
39816 				break;
39817 			case 4:
39818 				enterOuterAlt(_localctx, 4);
39819 				{
39820 				setState(5440);
39821 				match(EXPAND);
39822 				setState(5441);
39823 				match(VIEWS);
39824 				}
39825 				break;
39826 			case 5:
39827 				enterOuterAlt(_localctx, 5);
39828 				{
39829 				setState(5442);
39830 				match(FAST);
39831 				setState(5443);
39832 				match(INT_NUM_);
39833 				}
39834 				break;
39835 			case 6:
39836 				enterOuterAlt(_localctx, 6);
39837 				{
39838 				setState(5444);
39839 				match(FORCE);
39840 				setState(5445);
39841 				match(ORDER);
39842 				}
39843 				break;
39844 			case 7:
39845 				enterOuterAlt(_localctx, 7);
39846 				{
39847 				setState(5446);
39848 				_la = _input.LA(1);
39849 				if ( !(_la==DISABLE || _la==FORCE) ) {
39850 				_errHandler.recoverInline(this);
39851 				}
39852 				else {
39853 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39854 					_errHandler.reportMatch(this);
39855 					consume();
39856 				}
39857 				setState(5447);
39858 				match(EXTERNALPUSHDOWN);
39859 				}
39860 				break;
39861 			case 8:
39862 				enterOuterAlt(_localctx, 8);
39863 				{
39864 				setState(5448);
39865 				_la = _input.LA(1);
39866 				if ( !(_la==DISABLE || _la==FORCE) ) {
39867 				_errHandler.recoverInline(this);
39868 				}
39869 				else {
39870 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39871 					_errHandler.reportMatch(this);
39872 					consume();
39873 				}
39874 				setState(5449);
39875 				match(SCALEOUTEXECUTION);
39876 				}
39877 				break;
39878 			case 9:
39879 				enterOuterAlt(_localctx, 9);
39880 				{
39881 				setState(5450);
39882 				match(IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX);
39883 				}
39884 				break;
39885 			case 10:
39886 				enterOuterAlt(_localctx, 10);
39887 				{
39888 				setState(5451);
39889 				match(KEEP);
39890 				setState(5452);
39891 				match(PLAN);
39892 				}
39893 				break;
39894 			case 11:
39895 				enterOuterAlt(_localctx, 11);
39896 				{
39897 				setState(5453);
39898 				match(KEEPFIXED);
39899 				setState(5454);
39900 				match(PLAN);
39901 				}
39902 				break;
39903 			case 12:
39904 				enterOuterAlt(_localctx, 12);
39905 				{
39906 				setState(5455);
39907 				match(MAX_GRANT_PERCENT);
39908 				setState(5456);
39909 				match(EQ_);
39910 				setState(5457);
39911 				match(DECIMAL_NUM_);
39912 				}
39913 				break;
39914 			case 13:
39915 				enterOuterAlt(_localctx, 13);
39916 				{
39917 				setState(5458);
39918 				match(MIN_GRANT_PERCENT);
39919 				setState(5459);
39920 				match(EQ_);
39921 				setState(5460);
39922 				match(DECIMAL_NUM_);
39923 				}
39924 				break;
39925 			case 14:
39926 				enterOuterAlt(_localctx, 14);
39927 				{
39928 				setState(5461);
39929 				match(MAXDOP);
39930 				setState(5462);
39931 				match(INT_NUM_);
39932 				}
39933 				break;
39934 			case 15:
39935 				enterOuterAlt(_localctx, 15);
39936 				{
39937 				setState(5463);
39938 				match(MAXRECURSION);
39939 				setState(5464);
39940 				match(INT_NUM_);
39941 				}
39942 				break;
39943 			case 16:
39944 				enterOuterAlt(_localctx, 16);
39945 				{
39946 				setState(5465);
39947 				match(NO_PERFORMANCE_SPOOL);
39948 				}
39949 				break;
39950 			case 17:
39951 				enterOuterAlt(_localctx, 17);
39952 				{
39953 				setState(5466);
39954 				match(OPTIMIZE);
39955 				setState(5467);
39956 				match(FOR);
39957 				setState(5468);
39958 				match(LP_);
39959 				setState(5469);
39960 				match(AT_);
39961 				setState(5470);
39962 				name();
39963 				setState(5476);
39964 				_errHandler.sync(this);
39965 				_la = _input.LA(1);
39966 				while (_la==EQ_ || _la==UNKNOWN) {
39967 					{
39968 					setState(5474);
39969 					_errHandler.sync(this);
39970 					switch (_input.LA(1)) {
39971 					case UNKNOWN:
39972 						{
39973 						setState(5471);
39974 						match(UNKNOWN);
39975 						}
39976 						break;
39977 					case EQ_:
39978 						{
39979 						setState(5472);
39980 						match(EQ_);
39981 						setState(5473);
39982 						identifier();
39983 						}
39984 						break;
39985 					default:
39986 						throw new NoViableAltException(this);
39987 					}
39988 					}
39989 					setState(5478);
39990 					_errHandler.sync(this);
39991 					_la = _input.LA(1);
39992 				}
39993 				setState(5479);
39994 				match(RP_);
39995 				}
39996 				break;
39997 			case 18:
39998 				enterOuterAlt(_localctx, 18);
39999 				{
40000 				setState(5481);
40001 				match(OPTIMIZE);
40002 				setState(5482);
40003 				match(FOR);
40004 				setState(5483);
40005 				match(UNKNOWN);
40006 				}
40007 				break;
40008 			case 19:
40009 				enterOuterAlt(_localctx, 19);
40010 				{
40011 				setState(5484);
40012 				match(PARAMETERIZATION);
40013 				setState(5485);
40014 				_la = _input.LA(1);
40015 				if ( !(_la==SIMPLE || _la==FORCED) ) {
40016 				_errHandler.recoverInline(this);
40017 				}
40018 				else {
40019 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40020 					_errHandler.reportMatch(this);
40021 					consume();
40022 				}
40023 				}
40024 				break;
40025 			case 20:
40026 				enterOuterAlt(_localctx, 20);
40027 				{
40028 				setState(5486);
40029 				match(QUERYTRACEON);
40030 				setState(5487);
40031 				match(INT_NUM_);
40032 				}
40033 				break;
40034 			case 21:
40035 				enterOuterAlt(_localctx, 21);
40036 				{
40037 				setState(5488);
40038 				match(RECOMPILE);
40039 				}
40040 				break;
40041 			case 22:
40042 				enterOuterAlt(_localctx, 22);
40043 				{
40044 				setState(5489);
40045 				match(ROBUST);
40046 				setState(5490);
40047 				match(PLAN);
40048 				}
40049 				break;
40050 			case 23:
40051 				enterOuterAlt(_localctx, 23);
40052 				{
40053 				setState(5491);
40054 				match(USE);
40055 				setState(5492);
40056 				match(HINT);
40057 				setState(5493);
40058 				match(LP_);
40059 				setState(5497);
40060 				_errHandler.sync(this);
40061 				_la = _input.LA(1);
40062 				while (_la==SQ_) {
40063 					{
40064 					{
40065 					setState(5494);
40066 					useHitName();
40067 					}
40068 					}
40069 					setState(5499);
40070 					_errHandler.sync(this);
40071 					_la = _input.LA(1);
40072 				}
40073 				setState(5500);
40074 				match(RP_);
40075 				}
40076 				break;
40077 			case 24:
40078 				enterOuterAlt(_localctx, 24);
40079 				{
40080 				setState(5501);
40081 				match(USE);
40082 				setState(5502);
40083 				match(PLAN);
40084 				setState(5503);
40085 				match(NCHAR_TEXT);
40086 				}
40087 				break;
40088 			}
40089 		}
40090 		catch (RecognitionException re) {
40091 			_localctx.exception = re;
40092 			_errHandler.reportError(this, re);
40093 			_errHandler.recover(this, re);
40094 		}
40095 		finally {
40096 			exitRule();
40097 		}
40098 		return _localctx;
40099 	}
40100 
40101 	public static class UseHitNameContext extends ParserRuleContext {
40102 		public List<TerminalNode> SQ_() { return getTokens(SQLServerStatementParser.SQ_); }
40103 		public TerminalNode SQ_(int i) {
40104 			return getToken(SQLServerStatementParser.SQ_, i);
40105 		}
40106 		public TerminalNode ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS() { return getToken(SQLServerStatementParser.ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS, 0); }
40107 		public TerminalNode ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES() { return getToken(SQLServerStatementParser.ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES, 0); }
40108 		public TerminalNode DISABLE_BATCH_MODE_ADAPTIVE_JOINS() { return getToken(SQLServerStatementParser.DISABLE_BATCH_MODE_ADAPTIVE_JOINS, 0); }
40109 		public TerminalNode DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK() { return getToken(SQLServerStatementParser.DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK, 0); }
40110 		public TerminalNode DISABLE_DEFERRED_COMPILATION_TV() { return getToken(SQLServerStatementParser.DISABLE_DEFERRED_COMPILATION_TV, 0); }
40111 		public TerminalNode DISABLE_INTERLEAVED_EXECUTION_TVF() { return getToken(SQLServerStatementParser.DISABLE_INTERLEAVED_EXECUTION_TVF, 0); }
40112 		public TerminalNode DISABLE_OPTIMIZED_NESTED_LOOP() { return getToken(SQLServerStatementParser.DISABLE_OPTIMIZED_NESTED_LOOP, 0); }
40113 		public TerminalNode DISABLE_OPTIMIZER_ROWGOAL() { return getToken(SQLServerStatementParser.DISABLE_OPTIMIZER_ROWGOAL, 0); }
40114 		public TerminalNode DISABLE_PARAMETER_SNIFFING() { return getToken(SQLServerStatementParser.DISABLE_PARAMETER_SNIFFING, 0); }
40115 		public TerminalNode DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK() { return getToken(SQLServerStatementParser.DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK, 0); }
40116 		public TerminalNode DISABLE_TSQL_SCALAR_UDF_INLINING() { return getToken(SQLServerStatementParser.DISABLE_TSQL_SCALAR_UDF_INLINING, 0); }
40117 		public TerminalNode DISALLOW_BATCH_MODE() { return getToken(SQLServerStatementParser.DISALLOW_BATCH_MODE, 0); }
40118 		public TerminalNode ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS() { return getToken(SQLServerStatementParser.ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS, 0); }
40119 		public TerminalNode ENABLE_QUERY_OPTIMIZER_HOTFIXES() { return getToken(SQLServerStatementParser.ENABLE_QUERY_OPTIMIZER_HOTFIXES, 0); }
40120 		public TerminalNode FORCE_DEFAULT_CARDINALITY_ESTIMATION() { return getToken(SQLServerStatementParser.FORCE_DEFAULT_CARDINALITY_ESTIMATION, 0); }
40121 		public TerminalNode FORCE_LEGACY_CARDINALITY_ESTIMATION() { return getToken(SQLServerStatementParser.FORCE_LEGACY_CARDINALITY_ESTIMATION, 0); }
40122 		public TerminalNode QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n() { return getToken(SQLServerStatementParser.QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n, 0); }
40123 		public TerminalNode QUERY_PLAN_PROFILE() { return getToken(SQLServerStatementParser.QUERY_PLAN_PROFILE, 0); }
40124 		public UseHitNameContext(ParserRuleContext parent, int invokingState) {
40125 			super(parent, invokingState);
40126 		}
40127 		@Override public int getRuleIndex() { return RULE_useHitName; }
40128 		@Override
40129 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40130 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUseHitName(this);
40131 			else return visitor.visitChildren(this);
40132 		}
40133 	}
40134 
40135 	public final UseHitNameContext useHitName() throws RecognitionException {
40136 		UseHitNameContext _localctx = new UseHitNameContext(_ctx, getState());
40137 		enterRule(_localctx, 772, RULE_useHitName);
40138 		try {
40139 			setState(5560);
40140 			_errHandler.sync(this);
40141 			switch ( getInterpreter().adaptivePredict(_input,633,_ctx) ) {
40142 			case 1:
40143 				enterOuterAlt(_localctx, 1);
40144 				{
40145 				setState(5506);
40146 				match(SQ_);
40147 				setState(5507);
40148 				match(ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS);
40149 				setState(5508);
40150 				match(SQ_);
40151 				}
40152 				break;
40153 			case 2:
40154 				enterOuterAlt(_localctx, 2);
40155 				{
40156 				setState(5509);
40157 				match(SQ_);
40158 				setState(5510);
40159 				match(ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES);
40160 				setState(5511);
40161 				match(SQ_);
40162 				}
40163 				break;
40164 			case 3:
40165 				enterOuterAlt(_localctx, 3);
40166 				{
40167 				setState(5512);
40168 				match(SQ_);
40169 				setState(5513);
40170 				match(DISABLE_BATCH_MODE_ADAPTIVE_JOINS);
40171 				setState(5514);
40172 				match(SQ_);
40173 				}
40174 				break;
40175 			case 4:
40176 				enterOuterAlt(_localctx, 4);
40177 				{
40178 				setState(5515);
40179 				match(SQ_);
40180 				setState(5516);
40181 				match(DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK);
40182 				setState(5517);
40183 				match(SQ_);
40184 				}
40185 				break;
40186 			case 5:
40187 				enterOuterAlt(_localctx, 5);
40188 				{
40189 				setState(5518);
40190 				match(SQ_);
40191 				setState(5519);
40192 				match(DISABLE_DEFERRED_COMPILATION_TV);
40193 				setState(5520);
40194 				match(SQ_);
40195 				}
40196 				break;
40197 			case 6:
40198 				enterOuterAlt(_localctx, 6);
40199 				{
40200 				setState(5521);
40201 				match(SQ_);
40202 				setState(5522);
40203 				match(DISABLE_INTERLEAVED_EXECUTION_TVF);
40204 				setState(5523);
40205 				match(SQ_);
40206 				}
40207 				break;
40208 			case 7:
40209 				enterOuterAlt(_localctx, 7);
40210 				{
40211 				setState(5524);
40212 				match(SQ_);
40213 				setState(5525);
40214 				match(DISABLE_OPTIMIZED_NESTED_LOOP);
40215 				setState(5526);
40216 				match(SQ_);
40217 				}
40218 				break;
40219 			case 8:
40220 				enterOuterAlt(_localctx, 8);
40221 				{
40222 				setState(5527);
40223 				match(SQ_);
40224 				setState(5528);
40225 				match(DISABLE_OPTIMIZER_ROWGOAL);
40226 				setState(5529);
40227 				match(SQ_);
40228 				}
40229 				break;
40230 			case 9:
40231 				enterOuterAlt(_localctx, 9);
40232 				{
40233 				setState(5530);
40234 				match(SQ_);
40235 				setState(5531);
40236 				match(DISABLE_PARAMETER_SNIFFING);
40237 				setState(5532);
40238 				match(SQ_);
40239 				}
40240 				break;
40241 			case 10:
40242 				enterOuterAlt(_localctx, 10);
40243 				{
40244 				setState(5533);
40245 				match(SQ_);
40246 				setState(5534);
40247 				match(DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK);
40248 				setState(5535);
40249 				match(SQ_);
40250 				}
40251 				break;
40252 			case 11:
40253 				enterOuterAlt(_localctx, 11);
40254 				{
40255 				setState(5536);
40256 				match(SQ_);
40257 				setState(5537);
40258 				match(DISABLE_TSQL_SCALAR_UDF_INLINING);
40259 				setState(5538);
40260 				match(SQ_);
40261 				}
40262 				break;
40263 			case 12:
40264 				enterOuterAlt(_localctx, 12);
40265 				{
40266 				setState(5539);
40267 				match(SQ_);
40268 				setState(5540);
40269 				match(DISALLOW_BATCH_MODE);
40270 				setState(5541);
40271 				match(SQ_);
40272 				}
40273 				break;
40274 			case 13:
40275 				enterOuterAlt(_localctx, 13);
40276 				{
40277 				setState(5542);
40278 				match(SQ_);
40279 				setState(5543);
40280 				match(ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS);
40281 				setState(5544);
40282 				match(SQ_);
40283 				}
40284 				break;
40285 			case 14:
40286 				enterOuterAlt(_localctx, 14);
40287 				{
40288 				setState(5545);
40289 				match(SQ_);
40290 				setState(5546);
40291 				match(ENABLE_QUERY_OPTIMIZER_HOTFIXES);
40292 				setState(5547);
40293 				match(SQ_);
40294 				}
40295 				break;
40296 			case 15:
40297 				enterOuterAlt(_localctx, 15);
40298 				{
40299 				setState(5548);
40300 				match(SQ_);
40301 				setState(5549);
40302 				match(FORCE_DEFAULT_CARDINALITY_ESTIMATION);
40303 				setState(5550);
40304 				match(SQ_);
40305 				}
40306 				break;
40307 			case 16:
40308 				enterOuterAlt(_localctx, 16);
40309 				{
40310 				setState(5551);
40311 				match(SQ_);
40312 				setState(5552);
40313 				match(FORCE_LEGACY_CARDINALITY_ESTIMATION);
40314 				setState(5553);
40315 				match(SQ_);
40316 				}
40317 				break;
40318 			case 17:
40319 				enterOuterAlt(_localctx, 17);
40320 				{
40321 				setState(5554);
40322 				match(SQ_);
40323 				setState(5555);
40324 				match(QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n);
40325 				setState(5556);
40326 				match(SQ_);
40327 				}
40328 				break;
40329 			case 18:
40330 				enterOuterAlt(_localctx, 18);
40331 				{
40332 				setState(5557);
40333 				match(SQ_);
40334 				setState(5558);
40335 				match(QUERY_PLAN_PROFILE);
40336 				setState(5559);
40337 				match(SQ_);
40338 				}
40339 				break;
40340 			}
40341 		}
40342 		catch (RecognitionException re) {
40343 			_localctx.exception = re;
40344 			_errHandler.reportError(this, re);
40345 			_errHandler.recover(this, re);
40346 		}
40347 		finally {
40348 			exitRule();
40349 		}
40350 		return _localctx;
40351 	}
40352 
40353 	public static class ForClauseContext extends ParserRuleContext {
40354 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
40355 		public TerminalNode BROWSE() { return getToken(SQLServerStatementParser.BROWSE, 0); }
40356 		public ForXmlClauseContext forXmlClause() {
40357 			return getRuleContext(ForXmlClauseContext.class,0);
40358 		}
40359 		public ForJsonClauseContext forJsonClause() {
40360 			return getRuleContext(ForJsonClauseContext.class,0);
40361 		}
40362 		public ForClauseContext(ParserRuleContext parent, int invokingState) {
40363 			super(parent, invokingState);
40364 		}
40365 		@Override public int getRuleIndex() { return RULE_forClause; }
40366 		@Override
40367 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40368 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForClause(this);
40369 			else return visitor.visitChildren(this);
40370 		}
40371 	}
40372 
40373 	public final ForClauseContext forClause() throws RecognitionException {
40374 		ForClauseContext _localctx = new ForClauseContext(_ctx, getState());
40375 		enterRule(_localctx, 774, RULE_forClause);
40376 		try {
40377 			enterOuterAlt(_localctx, 1);
40378 			{
40379 			setState(5562);
40380 			match(FOR);
40381 			setState(5566);
40382 			_errHandler.sync(this);
40383 			switch (_input.LA(1)) {
40384 			case BROWSE:
40385 				{
40386 				setState(5563);
40387 				match(BROWSE);
40388 				}
40389 				break;
40390 			case XML:
40391 				{
40392 				setState(5564);
40393 				forXmlClause();
40394 				}
40395 				break;
40396 			case JSON:
40397 				{
40398 				setState(5565);
40399 				forJsonClause();
40400 				}
40401 				break;
40402 			default:
40403 				throw new NoViableAltException(this);
40404 			}
40405 			}
40406 		}
40407 		catch (RecognitionException re) {
40408 			_localctx.exception = re;
40409 			_errHandler.reportError(this, re);
40410 			_errHandler.recover(this, re);
40411 		}
40412 		finally {
40413 			exitRule();
40414 		}
40415 		return _localctx;
40416 	}
40417 
40418 	public static class ForXmlClauseContext extends ParserRuleContext {
40419 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
40420 		public TerminalNode EXPLICIT() { return getToken(SQLServerStatementParser.EXPLICIT, 0); }
40421 		public TerminalNode PATH() { return getToken(SQLServerStatementParser.PATH, 0); }
40422 		public TerminalNode RAW() { return getToken(SQLServerStatementParser.RAW, 0); }
40423 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
40424 		public CommonDirectivesForXmlContext commonDirectivesForXml() {
40425 			return getRuleContext(CommonDirectivesForXmlContext.class,0);
40426 		}
40427 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
40428 		public TerminalNode LP_(int i) {
40429 			return getToken(SQLServerStatementParser.LP_, i);
40430 		}
40431 		public List<StringLiteralsContext> stringLiterals() {
40432 			return getRuleContexts(StringLiteralsContext.class);
40433 		}
40434 		public StringLiteralsContext stringLiterals(int i) {
40435 			return getRuleContext(StringLiteralsContext.class,i);
40436 		}
40437 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
40438 		public TerminalNode RP_(int i) {
40439 			return getToken(SQLServerStatementParser.RP_, i);
40440 		}
40441 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40442 		public TerminalNode COMMA_(int i) {
40443 			return getToken(SQLServerStatementParser.COMMA_, i);
40444 		}
40445 		public TerminalNode ELEMENTS() { return getToken(SQLServerStatementParser.ELEMENTS, 0); }
40446 		public TerminalNode XMLDATA() { return getToken(SQLServerStatementParser.XMLDATA, 0); }
40447 		public TerminalNode XMLSCHEMA() { return getToken(SQLServerStatementParser.XMLSCHEMA, 0); }
40448 		public TerminalNode XSINIL() { return getToken(SQLServerStatementParser.XSINIL, 0); }
40449 		public TerminalNode ABSENT() { return getToken(SQLServerStatementParser.ABSENT, 0); }
40450 		public ForXmlClauseContext(ParserRuleContext parent, int invokingState) {
40451 			super(parent, invokingState);
40452 		}
40453 		@Override public int getRuleIndex() { return RULE_forXmlClause; }
40454 		@Override
40455 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40456 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForXmlClause(this);
40457 			else return visitor.visitChildren(this);
40458 		}
40459 	}
40460 
40461 	public final ForXmlClauseContext forXmlClause() throws RecognitionException {
40462 		ForXmlClauseContext _localctx = new ForXmlClauseContext(_ctx, getState());
40463 		enterRule(_localctx, 776, RULE_forXmlClause);
40464 		int _la;
40465 		try {
40466 			enterOuterAlt(_localctx, 1);
40467 			{
40468 			setState(5568);
40469 			match(XML);
40470 			setState(5627);
40471 			_errHandler.sync(this);
40472 			switch (_input.LA(1)) {
40473 			case AUTO:
40474 			case RAW:
40475 				{
40476 				setState(5577);
40477 				_errHandler.sync(this);
40478 				switch (_input.LA(1)) {
40479 				case RAW:
40480 					{
40481 					setState(5569);
40482 					match(RAW);
40483 					setState(5574);
40484 					_errHandler.sync(this);
40485 					_la = _input.LA(1);
40486 					if (_la==LP_) {
40487 						{
40488 						setState(5570);
40489 						match(LP_);
40490 						setState(5571);
40491 						stringLiterals();
40492 						setState(5572);
40493 						match(RP_);
40494 						}
40495 					}
40496 
40497 					}
40498 					break;
40499 				case AUTO:
40500 					{
40501 					setState(5576);
40502 					match(AUTO);
40503 					}
40504 					break;
40505 				default:
40506 					throw new NoViableAltException(this);
40507 				}
40508 				setState(5600);
40509 				_errHandler.sync(this);
40510 				switch ( getInterpreter().adaptivePredict(_input,642,_ctx) ) {
40511 				case 1:
40512 					{
40513 					setState(5579);
40514 					commonDirectivesForXml();
40515 					setState(5591);
40516 					_errHandler.sync(this);
40517 					switch ( getInterpreter().adaptivePredict(_input,639,_ctx) ) {
40518 					case 1:
40519 						{
40520 						setState(5580);
40521 						match(COMMA_);
40522 						setState(5589);
40523 						_errHandler.sync(this);
40524 						switch (_input.LA(1)) {
40525 						case XMLDATA:
40526 							{
40527 							setState(5581);
40528 							match(XMLDATA);
40529 							}
40530 							break;
40531 						case XMLSCHEMA:
40532 							{
40533 							setState(5582);
40534 							match(XMLSCHEMA);
40535 							setState(5587);
40536 							_errHandler.sync(this);
40537 							_la = _input.LA(1);
40538 							if (_la==LP_) {
40539 								{
40540 								setState(5583);
40541 								match(LP_);
40542 								setState(5584);
40543 								stringLiterals();
40544 								setState(5585);
40545 								match(RP_);
40546 								}
40547 							}
40548 
40549 							}
40550 							break;
40551 						default:
40552 							throw new NoViableAltException(this);
40553 						}
40554 						}
40555 						break;
40556 					}
40557 					setState(5598);
40558 					_errHandler.sync(this);
40559 					_la = _input.LA(1);
40560 					if (_la==COMMA_) {
40561 						{
40562 						setState(5593);
40563 						match(COMMA_);
40564 						setState(5594);
40565 						match(ELEMENTS);
40566 						setState(5596);
40567 						_errHandler.sync(this);
40568 						_la = _input.LA(1);
40569 						if (_la==XSINIL || _la==ABSENT) {
40570 							{
40571 							setState(5595);
40572 							_la = _input.LA(1);
40573 							if ( !(_la==XSINIL || _la==ABSENT) ) {
40574 							_errHandler.recoverInline(this);
40575 							}
40576 							else {
40577 								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40578 								_errHandler.reportMatch(this);
40579 								consume();
40580 							}
40581 							}
40582 						}
40583 
40584 						}
40585 					}
40586 
40587 					}
40588 					break;
40589 				}
40590 				}
40591 				break;
40592 			case EXPLICIT:
40593 				{
40594 				setState(5602);
40595 				match(EXPLICIT);
40596 				setState(5608);
40597 				_errHandler.sync(this);
40598 				switch ( getInterpreter().adaptivePredict(_input,644,_ctx) ) {
40599 				case 1:
40600 					{
40601 					setState(5603);
40602 					commonDirectivesForXml();
40603 					setState(5606);
40604 					_errHandler.sync(this);
40605 					_la = _input.LA(1);
40606 					if (_la==COMMA_) {
40607 						{
40608 						setState(5604);
40609 						match(COMMA_);
40610 						setState(5605);
40611 						match(XMLDATA);
40612 						}
40613 					}
40614 
40615 					}
40616 					break;
40617 				}
40618 				}
40619 				break;
40620 			case PATH:
40621 				{
40622 				setState(5610);
40623 				match(PATH);
40624 				setState(5615);
40625 				_errHandler.sync(this);
40626 				_la = _input.LA(1);
40627 				if (_la==LP_) {
40628 					{
40629 					setState(5611);
40630 					match(LP_);
40631 					setState(5612);
40632 					stringLiterals();
40633 					setState(5613);
40634 					match(RP_);
40635 					}
40636 				}
40637 
40638 				setState(5625);
40639 				_errHandler.sync(this);
40640 				switch ( getInterpreter().adaptivePredict(_input,648,_ctx) ) {
40641 				case 1:
40642 					{
40643 					setState(5617);
40644 					commonDirectivesForXml();
40645 					setState(5623);
40646 					_errHandler.sync(this);
40647 					_la = _input.LA(1);
40648 					if (_la==COMMA_) {
40649 						{
40650 						setState(5618);
40651 						match(COMMA_);
40652 						setState(5619);
40653 						match(ELEMENTS);
40654 						setState(5621);
40655 						_errHandler.sync(this);
40656 						_la = _input.LA(1);
40657 						if (_la==XSINIL || _la==ABSENT) {
40658 							{
40659 							setState(5620);
40660 							_la = _input.LA(1);
40661 							if ( !(_la==XSINIL || _la==ABSENT) ) {
40662 							_errHandler.recoverInline(this);
40663 							}
40664 							else {
40665 								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40666 								_errHandler.reportMatch(this);
40667 								consume();
40668 							}
40669 							}
40670 						}
40671 
40672 						}
40673 					}
40674 
40675 					}
40676 					break;
40677 				}
40678 				}
40679 				break;
40680 			default:
40681 				throw new NoViableAltException(this);
40682 			}
40683 			}
40684 		}
40685 		catch (RecognitionException re) {
40686 			_localctx.exception = re;
40687 			_errHandler.reportError(this, re);
40688 			_errHandler.recover(this, re);
40689 		}
40690 		finally {
40691 			exitRule();
40692 		}
40693 		return _localctx;
40694 	}
40695 
40696 	public static class CommonDirectivesForXmlContext extends ParserRuleContext {
40697 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40698 		public TerminalNode COMMA_(int i) {
40699 			return getToken(SQLServerStatementParser.COMMA_, i);
40700 		}
40701 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
40702 		public TerminalNode BASE64() { return getToken(SQLServerStatementParser.BASE64, 0); }
40703 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
40704 		public TerminalNode ROOT() { return getToken(SQLServerStatementParser.ROOT, 0); }
40705 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
40706 		public StringLiteralsContext stringLiterals() {
40707 			return getRuleContext(StringLiteralsContext.class,0);
40708 		}
40709 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
40710 		public CommonDirectivesForXmlContext(ParserRuleContext parent, int invokingState) {
40711 			super(parent, invokingState);
40712 		}
40713 		@Override public int getRuleIndex() { return RULE_commonDirectivesForXml; }
40714 		@Override
40715 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40716 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommonDirectivesForXml(this);
40717 			else return visitor.visitChildren(this);
40718 		}
40719 	}
40720 
40721 	public final CommonDirectivesForXmlContext commonDirectivesForXml() throws RecognitionException {
40722 		CommonDirectivesForXmlContext _localctx = new CommonDirectivesForXmlContext(_ctx, getState());
40723 		enterRule(_localctx, 778, RULE_commonDirectivesForXml);
40724 		int _la;
40725 		try {
40726 			enterOuterAlt(_localctx, 1);
40727 			{
40728 			setState(5632);
40729 			_errHandler.sync(this);
40730 			switch ( getInterpreter().adaptivePredict(_input,650,_ctx) ) {
40731 			case 1:
40732 				{
40733 				setState(5629);
40734 				match(COMMA_);
40735 				setState(5630);
40736 				match(BINARY);
40737 				setState(5631);
40738 				match(BASE64);
40739 				}
40740 				break;
40741 			}
40742 			setState(5636);
40743 			_errHandler.sync(this);
40744 			switch ( getInterpreter().adaptivePredict(_input,651,_ctx) ) {
40745 			case 1:
40746 				{
40747 				setState(5634);
40748 				match(COMMA_);
40749 				setState(5635);
40750 				match(TYPE);
40751 				}
40752 				break;
40753 			}
40754 			setState(5646);
40755 			_errHandler.sync(this);
40756 			switch ( getInterpreter().adaptivePredict(_input,653,_ctx) ) {
40757 			case 1:
40758 				{
40759 				setState(5638);
40760 				match(COMMA_);
40761 				setState(5639);
40762 				match(ROOT);
40763 				setState(5644);
40764 				_errHandler.sync(this);
40765 				_la = _input.LA(1);
40766 				if (_la==LP_) {
40767 					{
40768 					setState(5640);
40769 					match(LP_);
40770 					setState(5641);
40771 					stringLiterals();
40772 					setState(5642);
40773 					match(RP_);
40774 					}
40775 				}
40776 
40777 				}
40778 				break;
40779 			}
40780 			}
40781 		}
40782 		catch (RecognitionException re) {
40783 			_localctx.exception = re;
40784 			_errHandler.reportError(this, re);
40785 			_errHandler.recover(this, re);
40786 		}
40787 		finally {
40788 			exitRule();
40789 		}
40790 		return _localctx;
40791 	}
40792 
40793 	public static class ForJsonClauseContext extends ParserRuleContext {
40794 		public TerminalNode JSON() { return getToken(SQLServerStatementParser.JSON, 0); }
40795 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
40796 		public TerminalNode PATH() { return getToken(SQLServerStatementParser.PATH, 0); }
40797 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40798 		public TerminalNode COMMA_(int i) {
40799 			return getToken(SQLServerStatementParser.COMMA_, i);
40800 		}
40801 		public TerminalNode ROOT() { return getToken(SQLServerStatementParser.ROOT, 0); }
40802 		public TerminalNode INCLUDE_NULL_VALUES() { return getToken(SQLServerStatementParser.INCLUDE_NULL_VALUES, 0); }
40803 		public TerminalNode WITHOUT_ARRAY_WRAPPER() { return getToken(SQLServerStatementParser.WITHOUT_ARRAY_WRAPPER, 0); }
40804 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
40805 		public StringLiteralsContext stringLiterals() {
40806 			return getRuleContext(StringLiteralsContext.class,0);
40807 		}
40808 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
40809 		public ForJsonClauseContext(ParserRuleContext parent, int invokingState) {
40810 			super(parent, invokingState);
40811 		}
40812 		@Override public int getRuleIndex() { return RULE_forJsonClause; }
40813 		@Override
40814 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40815 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForJsonClause(this);
40816 			else return visitor.visitChildren(this);
40817 		}
40818 	}
40819 
40820 	public final ForJsonClauseContext forJsonClause() throws RecognitionException {
40821 		ForJsonClauseContext _localctx = new ForJsonClauseContext(_ctx, getState());
40822 		enterRule(_localctx, 780, RULE_forJsonClause);
40823 		int _la;
40824 		try {
40825 			enterOuterAlt(_localctx, 1);
40826 			{
40827 			setState(5648);
40828 			match(JSON);
40829 			{
40830 			setState(5649);
40831 			_la = _input.LA(1);
40832 			if ( !(_la==AUTO || _la==PATH) ) {
40833 			_errHandler.recoverInline(this);
40834 			}
40835 			else {
40836 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40837 				_errHandler.reportMatch(this);
40838 				consume();
40839 			}
40840 			setState(5668);
40841 			_errHandler.sync(this);
40842 			switch ( getInterpreter().adaptivePredict(_input,658,_ctx) ) {
40843 			case 1:
40844 				{
40845 				setState(5658);
40846 				_errHandler.sync(this);
40847 				switch ( getInterpreter().adaptivePredict(_input,655,_ctx) ) {
40848 				case 1:
40849 					{
40850 					setState(5650);
40851 					match(COMMA_);
40852 					setState(5651);
40853 					match(ROOT);
40854 					setState(5656);
40855 					_errHandler.sync(this);
40856 					_la = _input.LA(1);
40857 					if (_la==LP_) {
40858 						{
40859 						setState(5652);
40860 						match(LP_);
40861 						setState(5653);
40862 						stringLiterals();
40863 						setState(5654);
40864 						match(RP_);
40865 						}
40866 					}
40867 
40868 					}
40869 					break;
40870 				}
40871 				setState(5662);
40872 				_errHandler.sync(this);
40873 				switch ( getInterpreter().adaptivePredict(_input,656,_ctx) ) {
40874 				case 1:
40875 					{
40876 					setState(5660);
40877 					match(COMMA_);
40878 					setState(5661);
40879 					match(INCLUDE_NULL_VALUES);
40880 					}
40881 					break;
40882 				}
40883 				setState(5666);
40884 				_errHandler.sync(this);
40885 				_la = _input.LA(1);
40886 				if (_la==COMMA_) {
40887 					{
40888 					setState(5664);
40889 					match(COMMA_);
40890 					setState(5665);
40891 					match(WITHOUT_ARRAY_WRAPPER);
40892 					}
40893 				}
40894 
40895 				}
40896 				break;
40897 			}
40898 			}
40899 			}
40900 		}
40901 		catch (RecognitionException re) {
40902 			_localctx.exception = re;
40903 			_errHandler.reportError(this, re);
40904 			_errHandler.recover(this, re);
40905 		}
40906 		finally {
40907 			exitRule();
40908 		}
40909 		return _localctx;
40910 	}
40911 
40912 	public static class SelectWithClauseContext extends ParserRuleContext {
40913 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
40914 		public XmlNamespacesClauseContext xmlNamespacesClause() {
40915 			return getRuleContext(XmlNamespacesClauseContext.class,0);
40916 		}
40917 		public CteClauseSetContext cteClauseSet() {
40918 			return getRuleContext(CteClauseSetContext.class,0);
40919 		}
40920 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
40921 		public SelectWithClauseContext(ParserRuleContext parent, int invokingState) {
40922 			super(parent, invokingState);
40923 		}
40924 		@Override public int getRuleIndex() { return RULE_selectWithClause; }
40925 		@Override
40926 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40927 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelectWithClause(this);
40928 			else return visitor.visitChildren(this);
40929 		}
40930 	}
40931 
40932 	public final SelectWithClauseContext selectWithClause() throws RecognitionException {
40933 		SelectWithClauseContext _localctx = new SelectWithClauseContext(_ctx, getState());
40934 		enterRule(_localctx, 782, RULE_selectWithClause);
40935 		int _la;
40936 		try {
40937 			enterOuterAlt(_localctx, 1);
40938 			{
40939 			setState(5670);
40940 			match(WITH);
40941 			setState(5675);
40942 			_errHandler.sync(this);
40943 			_la = _input.LA(1);
40944 			if (_la==XMLNAMESPACES) {
40945 				{
40946 				setState(5671);
40947 				xmlNamespacesClause();
40948 				setState(5673);
40949 				_errHandler.sync(this);
40950 				_la = _input.LA(1);
40951 				if (_la==COMMA_) {
40952 					{
40953 					setState(5672);
40954 					match(COMMA_);
40955 					}
40956 				}
40957 
40958 				}
40959 			}
40960 
40961 			setState(5678);
40962 			_errHandler.sync(this);
40963 			_la = _input.LA(1);
40964 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)) | (1L << (ROW - 184)) | (1L << (ROWS - 184)) | (1L << (XOR - 184)) | (1L << (ALWAYS - 184)))) != 0) || ((((_la - 254)) & ~0x3f) == 0 && ((1L << (_la - 254)) & ((1L << (ROLE - 254)) | (1L << (START - 254)) | (1L << (ALGORITHM - 254)) | (1L << (AUTO - 254)) | (1L << (BLOCKERS - 254)) | (1L << (CLUSTERED - 254)) | (1L << (NONCLUSTERED - 254)) | (1L << (COLUMNSTORE - 254)) | (1L << (CONTENT - 254)) | (1L << (YEARS - 254)) | (1L << (MONTHS - 254)) | (1L << (WEEKS - 254)) | (1L << (DAYS - 254)) | (1L << (MINUTES - 254)) | (1L << (DENY - 254)) | (1L << (DETERMINISTIC - 254)) | (1L << (DISTRIBUTION - 254)) | (1L << (DOCUMENT - 254)) | (1L << (DURABILITY - 254)) | (1L << (ENCRYPTED - 254)) | (1L << (FILESTREAM - 254)) | (1L << (FILETABLE - 254)) | (1L << (FILLFACTOR - 254)) | (1L << (FOLLOWING - 254)) | (1L << (HASH - 254)) | (1L << (HEAP - 254)) | (1L << (INBOUND - 254)) | (1L << (OUTBOUND - 254)) | (1L << (UNBOUNDED - 254)) | (1L << (INFINITE - 254)) | (1L << (LOGIN - 254)) | (1L << (MASKED - 254)) | (1L << (MAXDOP - 254)) | (1L << (MOVE - 254)) | (1L << (NOCHECK - 254)) | (1L << (OBJECT - 254)) | (1L << (ONLINE - 254)) | (1L << (OVER - 254)) | (1L << (PAGE - 254)) | (1L << (PAUSED - 254)) | (1L << (PERIOD - 254)) | (1L << (PERSISTED - 254)) | (1L << (PRECEDING - 254)) | (1L << (RANDOMIZED - 254)) | (1L << (RANGE - 254)) | (1L << (REBUILD - 254)) | (1L << (REPLICATE - 254)) | (1L << (REPLICATION - 254)) | (1L << (RESUMABLE - 254)) | (1L << (ROWGUIDCOL - 254)) | (1L << (SAVE - 254)) | (1L << (SELF - 254)) | (1L << (SPARSE - 254)) | (1L << (SWITCH - 254)) | (1L << (TRAN - 254)) | (1L << (TRANCOUNT - 254)))) != 0) || ((((_la - 324)) & ~0x3f) == 0 && ((1L << (_la - 324)) & ((1L << (CONTROL - 324)) | (1L << (CONCAT - 324)) | (1L << (TAKE - 324)) | (1L << (OWNERSHIP - 324)) | (1L << (DEFINITION - 324)) | (1L << (APPLICATION - 324)) | (1L << (ASSEMBLY - 324)) | (1L << (SYMMETRIC - 324)) | (1L << (ASYMMETRIC - 324)) | (1L << (SERVER - 324)) | (1L << (RECEIVE - 324)) | (1L << (CHANGE - 324)) | (1L << (TRACE - 324)) | (1L << (TRACKING - 324)) | (1L << (RESOURCES - 324)) | (1L << (SETTINGS - 324)) | (1L << (STATE - 324)) | (1L << (AVAILABILITY - 324)) | (1L << (CREDENTIAL - 324)) | (1L << (ENDPOINT - 324)) | (1L << (EVENT - 324)) | (1L << (NOTIFICATION - 324)) | (1L << (LINKED - 324)) | (1L << (AUDIT - 324)) | (1L << (DDL - 324)) | (1L << (XML - 324)) | (1L << (IMPERSONATE - 324)) | (1L << (SECURABLES - 324)) | (1L << (AUTHENTICATE - 324)) | (1L << (EXTERNAL - 324)) | (1L << (ACCESS - 324)) | (1L << (ADMINISTER - 324)) | (1L << (BULK - 324)) | (1L << (OPERATIONS - 324)) | (1L << (UNSAFE - 324)) | (1L << (SHUTDOWN - 324)) | (1L << (SCOPED - 324)) | (1L << (CONFIGURATION - 324)) | (1L << (DATASPACE - 324)) | (1L << (SERVICE - 324)) | (1L << (CERTIFICATE - 324)) | (1L << (CONTRACT - 324)) | (1L << (ENCRYPTION - 324)) | (1L << (MASTER - 324)) | (1L << (DATA - 324)) | (1L << (SOURCE - 324)) | (1L << (FILE - 324)) | (1L << (FORMAT - 324)) | (1L << (LIBRARY - 324)) | (1L << (FULLTEXT - 324)) | (1L << (MASK - 324)) | (1L << (UNMASK - 324)) | (1L << (MESSAGE - 324)) | (1L << (REMOTE - 324)) | (1L << (BINDING - 324)) | (1L << (ROUTE - 324)) | (1L << (SECURITY - 324)) | (1L << (POLICY - 324)) | (1L << (AGGREGATE - 324)) | (1L << (QUEUE - 324)) | (1L << (RULE - 324)) | (1L << (SYNONYM - 324)) | (1L << (COLLECTION - 324)) | (1L << (SCRIPT - 324)))) != 0) || ((((_la - 388)) & ~0x3f) == 0 && ((1L << (_la - 388)) & ((1L << (KILL - 388)) | (1L << (BACKUP - 388)) | (1L << (LOG - 388)) | (1L << (SHOWPLAN - 388)) | (1L << (SUBSCRIBE - 388)) | (1L << (QUERY - 388)) | (1L << (NOTIFICATIONS - 388)) | (1L << (CHECKPOINT - 388)) | (1L << (SEQUENCE - 388)) | (1L << (ABORT_AFTER_WAIT - 388)) | (1L << (ALLOW_PAGE_LOCKS - 388)) | (1L << (ALLOW_ROW_LOCKS - 388)) | (1L << (ALL_SPARSE_COLUMNS - 388)) | (1L << (BUCKET_COUNT - 388)) | (1L << (COLUMNSTORE_ARCHIVE - 388)) | (1L << (COLUMN_ENCRYPTION_KEY - 388)) | (1L << (COLUMN_SET - 388)) | (1L << (COMPRESSION_DELAY - 388)) | (1L << (DATABASE_DEAULT - 388)) | (1L << (DATA_COMPRESSION - 388)) | (1L << (DATA_CONSISTENCY_CHECK - 388)) | (1L << (ENCRYPTION_TYPE - 388)) | (1L << (SYSTEM_TIME - 388)) | (1L << (SYSTEM_VERSIONING - 388)) | (1L << (TEXTIMAGE_ON - 388)) | (1L << (WAIT_AT_LOW_PRIORITY - 388)) | (1L << (STATISTICS_INCREMENTAL - 388)) | (1L << (STATISTICS_NORECOMPUTE - 388)) | (1L << (ROUND_ROBIN - 388)) | (1L << (SCHEMA_AND_DATA - 388)) | (1L << (SCHEMA_ONLY - 388)) | (1L << (SORT_IN_TEMPDB - 388)) | (1L << (IGNORE_DUP_KEY - 388)) | (1L << (IMPLICIT_TRANSACTIONS - 388)) | (1L << (MAX_DURATION - 388)) | (1L << (MEMORY_OPTIMIZED - 388)) | (1L << (MIGRATION_STATE - 388)) | (1L << (PAD_INDEX - 388)) | (1L << (REMOTE_DATA_ARCHIVE - 388)) | (1L << (FILESTREAM_ON - 388)) | (1L << (FILETABLE_COLLATE_FILENAME - 388)) | (1L << (FILETABLE_DIRECTORY - 388)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 388)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 388)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 388)) | (1L << (FILTER_PREDICATE - 388)) | (1L << (HISTORY_RETENTION_PERIOD - 388)) | (1L << (HISTORY_TABLE - 388)) | (1L << (LOCK_ESCALATION - 388)) | (1L << (DROP_EXISTING - 388)) | (1L << (ROW_NUMBER - 388)) | (1L << (FIRST - 388)) | (1L << (DATETIME2 - 388)))) != 0) || ((((_la - 458)) & ~0x3f) == 0 && ((1L << (_la - 458)) & ((1L << (OUTPUT - 458)) | (1L << (INSERTED - 458)) | (1L << (DELETED - 458)) | (1L << (FILENAME - 458)) | (1L << (SIZE - 458)) | (1L << (MAXSIZE - 458)) | (1L << (FILEGROWTH - 458)) | (1L << (UNLIMITED - 458)) | (1L << (KB - 458)) | (1L << (MB - 458)) | (1L << (GB - 458)) | (1L << (TB - 458)) | (1L << (CONTAINS - 458)) | (1L << (MEMORY_OPTIMIZED_DATA - 458)) | (1L << (FILEGROUP - 458)) | (1L << (NON_TRANSACTED_ACCESS - 458)) | (1L << (DB_CHAINING - 458)) | (1L << (TRUSTWORTHY - 458)) | (1L << (FORWARD_ONLY - 458)) | (1L << (KEYSET - 458)) | (1L << (FAST_FORWARD - 458)) | (1L << (SCROLL_LOCKS - 458)) | (1L << (OPTIMISTIC - 458)) | (1L << (TYPE_WARNING - 458)) | (1L << (SCHEMABINDING - 458)))) != 0) || ((((_la - 522)) & ~0x3f) == 0 && ((1L << (_la - 522)) & ((1L << (CALLER - 522)) | (1L << (OWNER - 522)) | (1L << (SNAPSHOT - 522)) | (1L << (REPEATABLE - 522)) | (1L << (SERIALIZABLE - 522)) | (1L << (NATIVE_COMPILATION - 522)) | (1L << (VIEW_METADATA - 522)) | (1L << (INSTEAD - 522)) | (1L << (APPEND - 522)) | (1L << (INCREMENT - 522)) | (1L << (CACHE - 522)) | (1L << (MINVALUE - 522)) | (1L << (MAXVALUE - 522)) | (1L << (RESTART - 522)) | (1L << (LOB_COMPACTION - 522)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 522)) | (1L << (REORGANIZE - 522)) | (1L << (RESUME - 522)) | (1L << (PAUSE - 522)) | (1L << (ABORT - 522)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 522)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 522)) | (1L << (IMMEDIATE - 522)) | (1L << (NO_WAIT - 522)) | (1L << (TARGET_RECOVERY_TIME - 522)) | (1L << (SECONDS - 522)) | (1L << (HONOR_BROKER_PRIORITY - 522)) | (1L << (ERROR_BROKER_CONVERSATIONS - 522)) | (1L << (NEW_BROKER - 522)) | (1L << (DISABLE_BROKER - 522)) | (1L << (ENABLE_BROKER - 522)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 522)) | (1L << (READ_COMMITTED_SNAPSHOT - 522)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 522)) | (1L << (RECURSIVE_TRIGGERS - 522)) | (1L << (QUOTED_IDENTIFIER - 522)) | (1L << (NUMERIC_ROUNDABORT - 522)) | (1L << (CONCAT_NULL_YIELDS_NULL - 522)) | (1L << (COMPATIBILITY_LEVEL - 522)) | (1L << (ARITHABORT - 522)) | (1L << (ANSI_WARNINGS - 522)) | (1L << (ANSI_PADDING - 522)) | (1L << (ANSI_NULLS - 522)))) != 0) || ((((_la - 586)) & ~0x3f) == 0 && ((1L << (_la - 586)) & ((1L << (ANSI_NULL_DEFAULT - 586)) | (1L << (PAGE_VERIFY - 586)) | (1L << (CHECKSUM - 586)) | (1L << (TORN_PAGE_DETECTION - 586)) | (1L << (BULK_LOGGED - 586)) | (1L << (RECOVERY - 586)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 586)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 586)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 586)) | (1L << (EXECUTION_COUNT - 586)) | (1L << (QUERY_CAPTURE_POLICY - 586)) | (1L << (WAIT_STATS_CAPTURE_MODE - 586)) | (1L << (MAX_PLANS_PER_QUERY - 586)) | (1L << (QUERY_CAPTURE_MODE - 586)) | (1L << (SIZE_BASED_CLEANUP_MODE - 586)) | (1L << (INTERVAL_LENGTH_MINUTES - 586)) | (1L << (MAX_STORAGE_SIZE_MB - 586)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 586)) | (1L << (CLEANUP_POLICY - 586)) | (1L << (CUSTOM - 586)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 586)) | (1L << (OPERATION_MODE - 586)) | (1L << (QUERY_STORE - 586)) | (1L << (CURSOR_DEFAULT - 586)) | (1L << (GLOBAL - 586)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 586)) | (1L << (HOURS - 586)) | (1L << (CHANGE_RETENTION - 586)) | (1L << (AUTO_CLEANUP - 586)) | (1L << (CHANGE_TRACKING - 586)) | (1L << (AUTOMATIC_TUNING - 586)) | (1L << (FORCE_LAST_GOOD_PLAN - 586)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 586)) | (1L << (AUTO_UPDATE_STATISTICS - 586)) | (1L << (AUTO_SHRINK - 586)) | (1L << (AUTO_CREATE_STATISTICS - 586)) | (1L << (INCREMENTAL - 586)) | (1L << (AUTO_CLOSE - 586)) | (1L << (DATA_RETENTION - 586)) | (1L << (TEMPORAL_HISTORY_RETENTION - 586)) | (1L << (EDITION - 586)) | (1L << (MIXED_PAGE_ALLOCATION - 586)) | (1L << (DISABLED - 586)) | (1L << (ALLOWED - 586)) | (1L << (HADR - 586)) | (1L << (MULTI_USER - 586)) | (1L << (RESTRICTED_USER - 586)) | (1L << (SINGLE_USER - 586)) | (1L << (OFFLINE - 586)) | (1L << (EMERGENCY - 586)) | (1L << (SUSPEND - 586)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 586)) | (1L << (ELASTIC_POOL - 586)) | (1L << (SERVICE_OBJECTIVE - 586)) | (1L << (DATABASE_NAME - 586)) | (1L << (ALLOW_CONNECTIONS - 586)) | (1L << (GEO - 586)) | (1L << (NAMED - 586)) | (1L << (DATEFIRST - 586)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 586)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 586)) | (1L << (SECONDARY - 586)) | (1L << (FAILOVER - 586)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 586)))) != 0) || ((((_la - 650)) & ~0x3f) == 0 && ((1L << (_la - 650)) & ((1L << (DEFAULT_LANGUAGE - 650)) | (1L << (INLINE - 650)) | (1L << (NESTED_TRIGGERS - 650)) | (1L << (TRANSFORM_NOISE_WORDS - 650)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 650)) | (1L << (PERSISTENT_LOG_BUFFER - 650)) | (1L << (DIRECTORY_NAME - 650)) | (1L << (DATEFORMAT - 650)) | (1L << (DELAYED_DURABILITY - 650)) | (1L << (AUTHORIZATION - 650)) | (1L << (TRANSFER - 650)) | (1L << (PROVIDER - 650)) | (1L << (SEARCH - 650)) | (1L << (MEMBER - 650)) | (1L << (IDENTIFIER_ - 650)) | (1L << (DELIMITED_IDENTIFIER_ - 650)))) != 0)) {
40965 				{
40966 				setState(5677);
40967 				cteClauseSet();
40968 				}
40969 			}
40970 
40971 			}
40972 		}
40973 		catch (RecognitionException re) {
40974 			_localctx.exception = re;
40975 			_errHandler.reportError(this, re);
40976 			_errHandler.recover(this, re);
40977 		}
40978 		finally {
40979 			exitRule();
40980 		}
40981 		return _localctx;
40982 	}
40983 
40984 	public static class XmlNamespacesClauseContext extends ParserRuleContext {
40985 		public TerminalNode XMLNAMESPACES() { return getToken(SQLServerStatementParser.XMLNAMESPACES, 0); }
40986 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
40987 		public List<XmlNamespaceDeclarationItemContext> xmlNamespaceDeclarationItem() {
40988 			return getRuleContexts(XmlNamespaceDeclarationItemContext.class);
40989 		}
40990 		public XmlNamespaceDeclarationItemContext xmlNamespaceDeclarationItem(int i) {
40991 			return getRuleContext(XmlNamespaceDeclarationItemContext.class,i);
40992 		}
40993 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
40994 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40995 		public TerminalNode COMMA_(int i) {
40996 			return getToken(SQLServerStatementParser.COMMA_, i);
40997 		}
40998 		public XmlNamespacesClauseContext(ParserRuleContext parent, int invokingState) {
40999 			super(parent, invokingState);
41000 		}
41001 		@Override public int getRuleIndex() { return RULE_xmlNamespacesClause; }
41002 		@Override
41003 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41004 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespacesClause(this);
41005 			else return visitor.visitChildren(this);
41006 		}
41007 	}
41008 
41009 	public final XmlNamespacesClauseContext xmlNamespacesClause() throws RecognitionException {
41010 		XmlNamespacesClauseContext _localctx = new XmlNamespacesClauseContext(_ctx, getState());
41011 		enterRule(_localctx, 784, RULE_xmlNamespacesClause);
41012 		int _la;
41013 		try {
41014 			enterOuterAlt(_localctx, 1);
41015 			{
41016 			setState(5680);
41017 			match(XMLNAMESPACES);
41018 			setState(5681);
41019 			match(LP_);
41020 			setState(5682);
41021 			xmlNamespaceDeclarationItem();
41022 			setState(5687);
41023 			_errHandler.sync(this);
41024 			_la = _input.LA(1);
41025 			while (_la==COMMA_) {
41026 				{
41027 				{
41028 				setState(5683);
41029 				match(COMMA_);
41030 				setState(5684);
41031 				xmlNamespaceDeclarationItem();
41032 				}
41033 				}
41034 				setState(5689);
41035 				_errHandler.sync(this);
41036 				_la = _input.LA(1);
41037 			}
41038 			setState(5690);
41039 			match(RP_);
41040 			}
41041 		}
41042 		catch (RecognitionException re) {
41043 			_localctx.exception = re;
41044 			_errHandler.reportError(this, re);
41045 			_errHandler.recover(this, re);
41046 		}
41047 		finally {
41048 			exitRule();
41049 		}
41050 		return _localctx;
41051 	}
41052 
41053 	public static class XmlNamespaceDeclarationItemContext extends ParserRuleContext {
41054 		public XmlNamespaceUriContext xmlNamespaceUri() {
41055 			return getRuleContext(XmlNamespaceUriContext.class,0);
41056 		}
41057 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
41058 		public XmlNamespacePrefixContext xmlNamespacePrefix() {
41059 			return getRuleContext(XmlNamespacePrefixContext.class,0);
41060 		}
41061 		public XmlDefaultNamespaceDeclarationItemContext xmlDefaultNamespaceDeclarationItem() {
41062 			return getRuleContext(XmlDefaultNamespaceDeclarationItemContext.class,0);
41063 		}
41064 		public XmlNamespaceDeclarationItemContext(ParserRuleContext parent, int invokingState) {
41065 			super(parent, invokingState);
41066 		}
41067 		@Override public int getRuleIndex() { return RULE_xmlNamespaceDeclarationItem; }
41068 		@Override
41069 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41070 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespaceDeclarationItem(this);
41071 			else return visitor.visitChildren(this);
41072 		}
41073 	}
41074 
41075 	public final XmlNamespaceDeclarationItemContext xmlNamespaceDeclarationItem() throws RecognitionException {
41076 		XmlNamespaceDeclarationItemContext _localctx = new XmlNamespaceDeclarationItemContext(_ctx, getState());
41077 		enterRule(_localctx, 786, RULE_xmlNamespaceDeclarationItem);
41078 		try {
41079 			setState(5697);
41080 			_errHandler.sync(this);
41081 			switch (_input.LA(1)) {
41082 			case STRING_:
41083 			case NCHAR_TEXT:
41084 				enterOuterAlt(_localctx, 1);
41085 				{
41086 				setState(5692);
41087 				xmlNamespaceUri();
41088 				setState(5693);
41089 				match(AS);
41090 				setState(5694);
41091 				xmlNamespacePrefix();
41092 				}
41093 				break;
41094 			case DEFAULT:
41095 				enterOuterAlt(_localctx, 2);
41096 				{
41097 				setState(5696);
41098 				xmlDefaultNamespaceDeclarationItem();
41099 				}
41100 				break;
41101 			default:
41102 				throw new NoViableAltException(this);
41103 			}
41104 		}
41105 		catch (RecognitionException re) {
41106 			_localctx.exception = re;
41107 			_errHandler.reportError(this, re);
41108 			_errHandler.recover(this, re);
41109 		}
41110 		finally {
41111 			exitRule();
41112 		}
41113 		return _localctx;
41114 	}
41115 
41116 	public static class XmlNamespaceUriContext extends ParserRuleContext {
41117 		public StringLiteralsContext stringLiterals() {
41118 			return getRuleContext(StringLiteralsContext.class,0);
41119 		}
41120 		public XmlNamespaceUriContext(ParserRuleContext parent, int invokingState) {
41121 			super(parent, invokingState);
41122 		}
41123 		@Override public int getRuleIndex() { return RULE_xmlNamespaceUri; }
41124 		@Override
41125 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41126 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespaceUri(this);
41127 			else return visitor.visitChildren(this);
41128 		}
41129 	}
41130 
41131 	public final XmlNamespaceUriContext xmlNamespaceUri() throws RecognitionException {
41132 		XmlNamespaceUriContext _localctx = new XmlNamespaceUriContext(_ctx, getState());
41133 		enterRule(_localctx, 788, RULE_xmlNamespaceUri);
41134 		try {
41135 			enterOuterAlt(_localctx, 1);
41136 			{
41137 			setState(5699);
41138 			stringLiterals();
41139 			}
41140 		}
41141 		catch (RecognitionException re) {
41142 			_localctx.exception = re;
41143 			_errHandler.reportError(this, re);
41144 			_errHandler.recover(this, re);
41145 		}
41146 		finally {
41147 			exitRule();
41148 		}
41149 		return _localctx;
41150 	}
41151 
41152 	public static class XmlNamespacePrefixContext extends ParserRuleContext {
41153 		public IdentifierContext identifier() {
41154 			return getRuleContext(IdentifierContext.class,0);
41155 		}
41156 		public XmlNamespacePrefixContext(ParserRuleContext parent, int invokingState) {
41157 			super(parent, invokingState);
41158 		}
41159 		@Override public int getRuleIndex() { return RULE_xmlNamespacePrefix; }
41160 		@Override
41161 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41162 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespacePrefix(this);
41163 			else return visitor.visitChildren(this);
41164 		}
41165 	}
41166 
41167 	public final XmlNamespacePrefixContext xmlNamespacePrefix() throws RecognitionException {
41168 		XmlNamespacePrefixContext _localctx = new XmlNamespacePrefixContext(_ctx, getState());
41169 		enterRule(_localctx, 790, RULE_xmlNamespacePrefix);
41170 		try {
41171 			enterOuterAlt(_localctx, 1);
41172 			{
41173 			setState(5701);
41174 			identifier();
41175 			}
41176 		}
41177 		catch (RecognitionException re) {
41178 			_localctx.exception = re;
41179 			_errHandler.reportError(this, re);
41180 			_errHandler.recover(this, re);
41181 		}
41182 		finally {
41183 			exitRule();
41184 		}
41185 		return _localctx;
41186 	}
41187 
41188 	public static class XmlDefaultNamespaceDeclarationItemContext extends ParserRuleContext {
41189 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
41190 		public XmlNamespaceUriContext xmlNamespaceUri() {
41191 			return getRuleContext(XmlNamespaceUriContext.class,0);
41192 		}
41193 		public XmlDefaultNamespaceDeclarationItemContext(ParserRuleContext parent, int invokingState) {
41194 			super(parent, invokingState);
41195 		}
41196 		@Override public int getRuleIndex() { return RULE_xmlDefaultNamespaceDeclarationItem; }
41197 		@Override
41198 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41199 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlDefaultNamespaceDeclarationItem(this);
41200 			else return visitor.visitChildren(this);
41201 		}
41202 	}
41203 
41204 	public final XmlDefaultNamespaceDeclarationItemContext xmlDefaultNamespaceDeclarationItem() throws RecognitionException {
41205 		XmlDefaultNamespaceDeclarationItemContext _localctx = new XmlDefaultNamespaceDeclarationItemContext(_ctx, getState());
41206 		enterRule(_localctx, 792, RULE_xmlDefaultNamespaceDeclarationItem);
41207 		try {
41208 			enterOuterAlt(_localctx, 1);
41209 			{
41210 			setState(5703);
41211 			match(DEFAULT);
41212 			setState(5704);
41213 			xmlNamespaceUri();
41214 			}
41215 		}
41216 		catch (RecognitionException re) {
41217 			_localctx.exception = re;
41218 			_errHandler.reportError(this, re);
41219 			_errHandler.recover(this, re);
41220 		}
41221 		finally {
41222 			exitRule();
41223 		}
41224 		return _localctx;
41225 	}
41226 
41227 	public static class GrantContext extends ParserRuleContext {
41228 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
41229 		public GrantClassPrivilegesClauseContext grantClassPrivilegesClause() {
41230 			return getRuleContext(GrantClassPrivilegesClauseContext.class,0);
41231 		}
41232 		public GrantClassTypePrivilegesClauseContext grantClassTypePrivilegesClause() {
41233 			return getRuleContext(GrantClassTypePrivilegesClauseContext.class,0);
41234 		}
41235 		public GrantContext(ParserRuleContext parent, int invokingState) {
41236 			super(parent, invokingState);
41237 		}
41238 		@Override public int getRuleIndex() { return RULE_grant; }
41239 		@Override
41240 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41241 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrant(this);
41242 			else return visitor.visitChildren(this);
41243 		}
41244 	}
41245 
41246 	public final GrantContext grant() throws RecognitionException {
41247 		GrantContext _localctx = new GrantContext(_ctx, getState());
41248 		enterRule(_localctx, 794, RULE_grant);
41249 		try {
41250 			enterOuterAlt(_localctx, 1);
41251 			{
41252 			setState(5706);
41253 			match(GRANT);
41254 			setState(5709);
41255 			_errHandler.sync(this);
41256 			switch ( getInterpreter().adaptivePredict(_input,664,_ctx) ) {
41257 			case 1:
41258 				{
41259 				setState(5707);
41260 				grantClassPrivilegesClause();
41261 				}
41262 				break;
41263 			case 2:
41264 				{
41265 				setState(5708);
41266 				grantClassTypePrivilegesClause();
41267 				}
41268 				break;
41269 			}
41270 			}
41271 		}
41272 		catch (RecognitionException re) {
41273 			_localctx.exception = re;
41274 			_errHandler.reportError(this, re);
41275 			_errHandler.recover(this, re);
41276 		}
41277 		finally {
41278 			exitRule();
41279 		}
41280 		return _localctx;
41281 	}
41282 
41283 	public static class GrantClassPrivilegesClauseContext extends ParserRuleContext {
41284 		public ClassPrivilegesContext classPrivileges() {
41285 			return getRuleContext(ClassPrivilegesContext.class,0);
41286 		}
41287 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
41288 		public List<PrincipalContext> principal() {
41289 			return getRuleContexts(PrincipalContext.class);
41290 		}
41291 		public PrincipalContext principal(int i) {
41292 			return getRuleContext(PrincipalContext.class,i);
41293 		}
41294 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
41295 		public OnClassClauseContext onClassClause() {
41296 			return getRuleContext(OnClassClauseContext.class,0);
41297 		}
41298 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41299 		public TerminalNode COMMA_(int i) {
41300 			return getToken(SQLServerStatementParser.COMMA_, i);
41301 		}
41302 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
41303 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
41304 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
41305 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
41306 		public GrantClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
41307 			super(parent, invokingState);
41308 		}
41309 		@Override public int getRuleIndex() { return RULE_grantClassPrivilegesClause; }
41310 		@Override
41311 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41312 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrantClassPrivilegesClause(this);
41313 			else return visitor.visitChildren(this);
41314 		}
41315 	}
41316 
41317 	public final GrantClassPrivilegesClauseContext grantClassPrivilegesClause() throws RecognitionException {
41318 		GrantClassPrivilegesClauseContext _localctx = new GrantClassPrivilegesClauseContext(_ctx, getState());
41319 		enterRule(_localctx, 796, RULE_grantClassPrivilegesClause);
41320 		int _la;
41321 		try {
41322 			enterOuterAlt(_localctx, 1);
41323 			{
41324 			setState(5711);
41325 			classPrivileges();
41326 			setState(5714);
41327 			_errHandler.sync(this);
41328 			_la = _input.LA(1);
41329 			if (_la==ON) {
41330 				{
41331 				setState(5712);
41332 				match(ON);
41333 				setState(5713);
41334 				onClassClause();
41335 				}
41336 			}
41337 
41338 			setState(5716);
41339 			match(TO);
41340 			setState(5717);
41341 			principal();
41342 			setState(5722);
41343 			_errHandler.sync(this);
41344 			_la = _input.LA(1);
41345 			while (_la==COMMA_) {
41346 				{
41347 				{
41348 				setState(5718);
41349 				match(COMMA_);
41350 				setState(5719);
41351 				principal();
41352 				}
41353 				}
41354 				setState(5724);
41355 				_errHandler.sync(this);
41356 				_la = _input.LA(1);
41357 			}
41358 			setState(5728);
41359 			_errHandler.sync(this);
41360 			_la = _input.LA(1);
41361 			if (_la==WITH) {
41362 				{
41363 				setState(5725);
41364 				match(WITH);
41365 				setState(5726);
41366 				match(GRANT);
41367 				setState(5727);
41368 				match(OPTION);
41369 				}
41370 			}
41371 
41372 			setState(5732);
41373 			_errHandler.sync(this);
41374 			_la = _input.LA(1);
41375 			if (_la==AS) {
41376 				{
41377 				setState(5730);
41378 				match(AS);
41379 				setState(5731);
41380 				principal();
41381 				}
41382 			}
41383 
41384 			}
41385 		}
41386 		catch (RecognitionException re) {
41387 			_localctx.exception = re;
41388 			_errHandler.reportError(this, re);
41389 			_errHandler.recover(this, re);
41390 		}
41391 		finally {
41392 			exitRule();
41393 		}
41394 		return _localctx;
41395 	}
41396 
41397 	public static class GrantClassTypePrivilegesClauseContext extends ParserRuleContext {
41398 		public ClassTypePrivilegesContext classTypePrivileges() {
41399 			return getRuleContext(ClassTypePrivilegesContext.class,0);
41400 		}
41401 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
41402 		public List<PrincipalContext> principal() {
41403 			return getRuleContexts(PrincipalContext.class);
41404 		}
41405 		public PrincipalContext principal(int i) {
41406 			return getRuleContext(PrincipalContext.class,i);
41407 		}
41408 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
41409 		public OnClassTypeClauseContext onClassTypeClause() {
41410 			return getRuleContext(OnClassTypeClauseContext.class,0);
41411 		}
41412 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41413 		public TerminalNode COMMA_(int i) {
41414 			return getToken(SQLServerStatementParser.COMMA_, i);
41415 		}
41416 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
41417 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
41418 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
41419 		public GrantClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
41420 			super(parent, invokingState);
41421 		}
41422 		@Override public int getRuleIndex() { return RULE_grantClassTypePrivilegesClause; }
41423 		@Override
41424 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41425 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrantClassTypePrivilegesClause(this);
41426 			else return visitor.visitChildren(this);
41427 		}
41428 	}
41429 
41430 	public final GrantClassTypePrivilegesClauseContext grantClassTypePrivilegesClause() throws RecognitionException {
41431 		GrantClassTypePrivilegesClauseContext _localctx = new GrantClassTypePrivilegesClauseContext(_ctx, getState());
41432 		enterRule(_localctx, 798, RULE_grantClassTypePrivilegesClause);
41433 		int _la;
41434 		try {
41435 			enterOuterAlt(_localctx, 1);
41436 			{
41437 			setState(5734);
41438 			classTypePrivileges();
41439 			setState(5737);
41440 			_errHandler.sync(this);
41441 			_la = _input.LA(1);
41442 			if (_la==ON) {
41443 				{
41444 				setState(5735);
41445 				match(ON);
41446 				setState(5736);
41447 				onClassTypeClause();
41448 				}
41449 			}
41450 
41451 			setState(5739);
41452 			match(TO);
41453 			setState(5740);
41454 			principal();
41455 			setState(5745);
41456 			_errHandler.sync(this);
41457 			_la = _input.LA(1);
41458 			while (_la==COMMA_) {
41459 				{
41460 				{
41461 				setState(5741);
41462 				match(COMMA_);
41463 				setState(5742);
41464 				principal();
41465 				}
41466 				}
41467 				setState(5747);
41468 				_errHandler.sync(this);
41469 				_la = _input.LA(1);
41470 			}
41471 			setState(5751);
41472 			_errHandler.sync(this);
41473 			_la = _input.LA(1);
41474 			if (_la==WITH) {
41475 				{
41476 				setState(5748);
41477 				match(WITH);
41478 				setState(5749);
41479 				match(GRANT);
41480 				setState(5750);
41481 				match(OPTION);
41482 				}
41483 			}
41484 
41485 			}
41486 		}
41487 		catch (RecognitionException re) {
41488 			_localctx.exception = re;
41489 			_errHandler.reportError(this, re);
41490 			_errHandler.recover(this, re);
41491 		}
41492 		finally {
41493 			exitRule();
41494 		}
41495 		return _localctx;
41496 	}
41497 
41498 	public static class ClassPrivilegesContext extends ParserRuleContext {
41499 		public List<PrivilegeTypeContext> privilegeType() {
41500 			return getRuleContexts(PrivilegeTypeContext.class);
41501 		}
41502 		public PrivilegeTypeContext privilegeType(int i) {
41503 			return getRuleContext(PrivilegeTypeContext.class,i);
41504 		}
41505 		public List<ColumnNamesContext> columnNames() {
41506 			return getRuleContexts(ColumnNamesContext.class);
41507 		}
41508 		public ColumnNamesContext columnNames(int i) {
41509 			return getRuleContext(ColumnNamesContext.class,i);
41510 		}
41511 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41512 		public TerminalNode COMMA_(int i) {
41513 			return getToken(SQLServerStatementParser.COMMA_, i);
41514 		}
41515 		public ClassPrivilegesContext(ParserRuleContext parent, int invokingState) {
41516 			super(parent, invokingState);
41517 		}
41518 		@Override public int getRuleIndex() { return RULE_classPrivileges; }
41519 		@Override
41520 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41521 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassPrivileges(this);
41522 			else return visitor.visitChildren(this);
41523 		}
41524 	}
41525 
41526 	public final ClassPrivilegesContext classPrivileges() throws RecognitionException {
41527 		ClassPrivilegesContext _localctx = new ClassPrivilegesContext(_ctx, getState());
41528 		enterRule(_localctx, 800, RULE_classPrivileges);
41529 		int _la;
41530 		try {
41531 			enterOuterAlt(_localctx, 1);
41532 			{
41533 			setState(5753);
41534 			privilegeType();
41535 			setState(5755);
41536 			_errHandler.sync(this);
41537 			_la = _input.LA(1);
41538 			if (_la==LP_) {
41539 				{
41540 				setState(5754);
41541 				columnNames();
41542 				}
41543 			}
41544 
41545 			setState(5764);
41546 			_errHandler.sync(this);
41547 			_la = _input.LA(1);
41548 			while (_la==COMMA_) {
41549 				{
41550 				{
41551 				setState(5757);
41552 				match(COMMA_);
41553 				setState(5758);
41554 				privilegeType();
41555 				setState(5760);
41556 				_errHandler.sync(this);
41557 				_la = _input.LA(1);
41558 				if (_la==LP_) {
41559 					{
41560 					setState(5759);
41561 					columnNames();
41562 					}
41563 				}
41564 
41565 				}
41566 				}
41567 				setState(5766);
41568 				_errHandler.sync(this);
41569 				_la = _input.LA(1);
41570 			}
41571 			}
41572 		}
41573 		catch (RecognitionException re) {
41574 			_localctx.exception = re;
41575 			_errHandler.reportError(this, re);
41576 			_errHandler.recover(this, re);
41577 		}
41578 		finally {
41579 			exitRule();
41580 		}
41581 		return _localctx;
41582 	}
41583 
41584 	public static class OnClassClauseContext extends ParserRuleContext {
41585 		public SecurableContext securable() {
41586 			return getRuleContext(SecurableContext.class,0);
41587 		}
41588 		public ClassItemContext classItem() {
41589 			return getRuleContext(ClassItemContext.class,0);
41590 		}
41591 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
41592 		public TerminalNode COLON_(int i) {
41593 			return getToken(SQLServerStatementParser.COLON_, i);
41594 		}
41595 		public OnClassClauseContext(ParserRuleContext parent, int invokingState) {
41596 			super(parent, invokingState);
41597 		}
41598 		@Override public int getRuleIndex() { return RULE_onClassClause; }
41599 		@Override
41600 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41601 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnClassClause(this);
41602 			else return visitor.visitChildren(this);
41603 		}
41604 	}
41605 
41606 	public final OnClassClauseContext onClassClause() throws RecognitionException {
41607 		OnClassClauseContext _localctx = new OnClassClauseContext(_ctx, getState());
41608 		enterRule(_localctx, 802, RULE_onClassClause);
41609 		try {
41610 			enterOuterAlt(_localctx, 1);
41611 			{
41612 			setState(5771);
41613 			_errHandler.sync(this);
41614 			switch ( getInterpreter().adaptivePredict(_input,675,_ctx) ) {
41615 			case 1:
41616 				{
41617 				setState(5767);
41618 				classItem();
41619 				setState(5768);
41620 				match(COLON_);
41621 				setState(5769);
41622 				match(COLON_);
41623 				}
41624 				break;
41625 			}
41626 			setState(5773);
41627 			securable();
41628 			}
41629 		}
41630 		catch (RecognitionException re) {
41631 			_localctx.exception = re;
41632 			_errHandler.reportError(this, re);
41633 			_errHandler.recover(this, re);
41634 		}
41635 		finally {
41636 			exitRule();
41637 		}
41638 		return _localctx;
41639 	}
41640 
41641 	public static class ClassTypePrivilegesContext extends ParserRuleContext {
41642 		public List<PrivilegeTypeContext> privilegeType() {
41643 			return getRuleContexts(PrivilegeTypeContext.class);
41644 		}
41645 		public PrivilegeTypeContext privilegeType(int i) {
41646 			return getRuleContext(PrivilegeTypeContext.class,i);
41647 		}
41648 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41649 		public TerminalNode COMMA_(int i) {
41650 			return getToken(SQLServerStatementParser.COMMA_, i);
41651 		}
41652 		public ClassTypePrivilegesContext(ParserRuleContext parent, int invokingState) {
41653 			super(parent, invokingState);
41654 		}
41655 		@Override public int getRuleIndex() { return RULE_classTypePrivileges; }
41656 		@Override
41657 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41658 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassTypePrivileges(this);
41659 			else return visitor.visitChildren(this);
41660 		}
41661 	}
41662 
41663 	public final ClassTypePrivilegesContext classTypePrivileges() throws RecognitionException {
41664 		ClassTypePrivilegesContext _localctx = new ClassTypePrivilegesContext(_ctx, getState());
41665 		enterRule(_localctx, 804, RULE_classTypePrivileges);
41666 		int _la;
41667 		try {
41668 			enterOuterAlt(_localctx, 1);
41669 			{
41670 			setState(5775);
41671 			privilegeType();
41672 			setState(5780);
41673 			_errHandler.sync(this);
41674 			_la = _input.LA(1);
41675 			while (_la==COMMA_) {
41676 				{
41677 				{
41678 				setState(5776);
41679 				match(COMMA_);
41680 				setState(5777);
41681 				privilegeType();
41682 				}
41683 				}
41684 				setState(5782);
41685 				_errHandler.sync(this);
41686 				_la = _input.LA(1);
41687 			}
41688 			}
41689 		}
41690 		catch (RecognitionException re) {
41691 			_localctx.exception = re;
41692 			_errHandler.reportError(this, re);
41693 			_errHandler.recover(this, re);
41694 		}
41695 		finally {
41696 			exitRule();
41697 		}
41698 		return _localctx;
41699 	}
41700 
41701 	public static class OnClassTypeClauseContext extends ParserRuleContext {
41702 		public SecurableContext securable() {
41703 			return getRuleContext(SecurableContext.class,0);
41704 		}
41705 		public ClassTypeContext classType() {
41706 			return getRuleContext(ClassTypeContext.class,0);
41707 		}
41708 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
41709 		public TerminalNode COLON_(int i) {
41710 			return getToken(SQLServerStatementParser.COLON_, i);
41711 		}
41712 		public OnClassTypeClauseContext(ParserRuleContext parent, int invokingState) {
41713 			super(parent, invokingState);
41714 		}
41715 		@Override public int getRuleIndex() { return RULE_onClassTypeClause; }
41716 		@Override
41717 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41718 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnClassTypeClause(this);
41719 			else return visitor.visitChildren(this);
41720 		}
41721 	}
41722 
41723 	public final OnClassTypeClauseContext onClassTypeClause() throws RecognitionException {
41724 		OnClassTypeClauseContext _localctx = new OnClassTypeClauseContext(_ctx, getState());
41725 		enterRule(_localctx, 806, RULE_onClassTypeClause);
41726 		try {
41727 			enterOuterAlt(_localctx, 1);
41728 			{
41729 			setState(5787);
41730 			_errHandler.sync(this);
41731 			switch ( getInterpreter().adaptivePredict(_input,677,_ctx) ) {
41732 			case 1:
41733 				{
41734 				setState(5783);
41735 				classType();
41736 				setState(5784);
41737 				match(COLON_);
41738 				setState(5785);
41739 				match(COLON_);
41740 				}
41741 				break;
41742 			}
41743 			setState(5789);
41744 			securable();
41745 			}
41746 		}
41747 		catch (RecognitionException re) {
41748 			_localctx.exception = re;
41749 			_errHandler.reportError(this, re);
41750 			_errHandler.recover(this, re);
41751 		}
41752 		finally {
41753 			exitRule();
41754 		}
41755 		return _localctx;
41756 	}
41757 
41758 	public static class SecurableContext extends ParserRuleContext {
41759 		public NameContext name() {
41760 			return getRuleContext(NameContext.class,0);
41761 		}
41762 		public OwnerContext owner() {
41763 			return getRuleContext(OwnerContext.class,0);
41764 		}
41765 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
41766 		public SecurableContext(ParserRuleContext parent, int invokingState) {
41767 			super(parent, invokingState);
41768 		}
41769 		@Override public int getRuleIndex() { return RULE_securable; }
41770 		@Override
41771 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41772 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSecurable(this);
41773 			else return visitor.visitChildren(this);
41774 		}
41775 	}
41776 
41777 	public final SecurableContext securable() throws RecognitionException {
41778 		SecurableContext _localctx = new SecurableContext(_ctx, getState());
41779 		enterRule(_localctx, 808, RULE_securable);
41780 		try {
41781 			enterOuterAlt(_localctx, 1);
41782 			{
41783 			setState(5794);
41784 			_errHandler.sync(this);
41785 			switch ( getInterpreter().adaptivePredict(_input,678,_ctx) ) {
41786 			case 1:
41787 				{
41788 				setState(5791);
41789 				owner();
41790 				setState(5792);
41791 				match(DOT_);
41792 				}
41793 				break;
41794 			}
41795 			setState(5796);
41796 			name();
41797 			}
41798 		}
41799 		catch (RecognitionException re) {
41800 			_localctx.exception = re;
41801 			_errHandler.reportError(this, re);
41802 			_errHandler.recover(this, re);
41803 		}
41804 		finally {
41805 			exitRule();
41806 		}
41807 		return _localctx;
41808 	}
41809 
41810 	public static class PrincipalContext extends ParserRuleContext {
41811 		public UserNameContext userName() {
41812 			return getRuleContext(UserNameContext.class,0);
41813 		}
41814 		public PrincipalContext(ParserRuleContext parent, int invokingState) {
41815 			super(parent, invokingState);
41816 		}
41817 		@Override public int getRuleIndex() { return RULE_principal; }
41818 		@Override
41819 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41820 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrincipal(this);
41821 			else return visitor.visitChildren(this);
41822 		}
41823 	}
41824 
41825 	public final PrincipalContext principal() throws RecognitionException {
41826 		PrincipalContext _localctx = new PrincipalContext(_ctx, getState());
41827 		enterRule(_localctx, 810, RULE_principal);
41828 		try {
41829 			enterOuterAlt(_localctx, 1);
41830 			{
41831 			setState(5798);
41832 			userName();
41833 			}
41834 		}
41835 		catch (RecognitionException re) {
41836 			_localctx.exception = re;
41837 			_errHandler.reportError(this, re);
41838 			_errHandler.recover(this, re);
41839 		}
41840 		finally {
41841 			exitRule();
41842 		}
41843 		return _localctx;
41844 	}
41845 
41846 	public static class RevokeContext extends ParserRuleContext {
41847 		public TerminalNode REVOKE() { return getToken(SQLServerStatementParser.REVOKE, 0); }
41848 		public RevokeClassPrivilegesClauseContext revokeClassPrivilegesClause() {
41849 			return getRuleContext(RevokeClassPrivilegesClauseContext.class,0);
41850 		}
41851 		public RevokeClassTypePrivilegesClauseContext revokeClassTypePrivilegesClause() {
41852 			return getRuleContext(RevokeClassTypePrivilegesClauseContext.class,0);
41853 		}
41854 		public OptionForClauseContext optionForClause() {
41855 			return getRuleContext(OptionForClauseContext.class,0);
41856 		}
41857 		public RevokeContext(ParserRuleContext parent, int invokingState) {
41858 			super(parent, invokingState);
41859 		}
41860 		@Override public int getRuleIndex() { return RULE_revoke; }
41861 		@Override
41862 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41863 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevoke(this);
41864 			else return visitor.visitChildren(this);
41865 		}
41866 	}
41867 
41868 	public final RevokeContext revoke() throws RecognitionException {
41869 		RevokeContext _localctx = new RevokeContext(_ctx, getState());
41870 		enterRule(_localctx, 812, RULE_revoke);
41871 		int _la;
41872 		try {
41873 			enterOuterAlt(_localctx, 1);
41874 			{
41875 			setState(5800);
41876 			match(REVOKE);
41877 			setState(5806);
41878 			_errHandler.sync(this);
41879 			switch ( getInterpreter().adaptivePredict(_input,680,_ctx) ) {
41880 			case 1:
41881 				{
41882 				setState(5802);
41883 				_errHandler.sync(this);
41884 				_la = _input.LA(1);
41885 				if (_la==GRANT) {
41886 					{
41887 					setState(5801);
41888 					optionForClause();
41889 					}
41890 				}
41891 
41892 				setState(5804);
41893 				revokeClassPrivilegesClause();
41894 				}
41895 				break;
41896 			case 2:
41897 				{
41898 				setState(5805);
41899 				revokeClassTypePrivilegesClause();
41900 				}
41901 				break;
41902 			}
41903 			}
41904 		}
41905 		catch (RecognitionException re) {
41906 			_localctx.exception = re;
41907 			_errHandler.reportError(this, re);
41908 			_errHandler.recover(this, re);
41909 		}
41910 		finally {
41911 			exitRule();
41912 		}
41913 		return _localctx;
41914 	}
41915 
41916 	public static class RevokeClassPrivilegesClauseContext extends ParserRuleContext {
41917 		public ClassPrivilegesContext classPrivileges() {
41918 			return getRuleContext(ClassPrivilegesContext.class,0);
41919 		}
41920 		public List<PrincipalContext> principal() {
41921 			return getRuleContexts(PrincipalContext.class);
41922 		}
41923 		public PrincipalContext principal(int i) {
41924 			return getRuleContext(PrincipalContext.class,i);
41925 		}
41926 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
41927 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
41928 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
41929 		public OnClassClauseContext onClassClause() {
41930 			return getRuleContext(OnClassClauseContext.class,0);
41931 		}
41932 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41933 		public TerminalNode COMMA_(int i) {
41934 			return getToken(SQLServerStatementParser.COMMA_, i);
41935 		}
41936 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
41937 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
41938 		public RevokeClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
41939 			super(parent, invokingState);
41940 		}
41941 		@Override public int getRuleIndex() { return RULE_revokeClassPrivilegesClause; }
41942 		@Override
41943 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41944 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevokeClassPrivilegesClause(this);
41945 			else return visitor.visitChildren(this);
41946 		}
41947 	}
41948 
41949 	public final RevokeClassPrivilegesClauseContext revokeClassPrivilegesClause() throws RecognitionException {
41950 		RevokeClassPrivilegesClauseContext _localctx = new RevokeClassPrivilegesClauseContext(_ctx, getState());
41951 		enterRule(_localctx, 814, RULE_revokeClassPrivilegesClause);
41952 		int _la;
41953 		try {
41954 			enterOuterAlt(_localctx, 1);
41955 			{
41956 			setState(5808);
41957 			classPrivileges();
41958 			setState(5811);
41959 			_errHandler.sync(this);
41960 			_la = _input.LA(1);
41961 			if (_la==ON) {
41962 				{
41963 				setState(5809);
41964 				match(ON);
41965 				setState(5810);
41966 				onClassClause();
41967 				}
41968 			}
41969 
41970 			setState(5813);
41971 			_la = _input.LA(1);
41972 			if ( !(_la==FROM || _la==TO) ) {
41973 			_errHandler.recoverInline(this);
41974 			}
41975 			else {
41976 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41977 				_errHandler.reportMatch(this);
41978 				consume();
41979 			}
41980 			setState(5814);
41981 			principal();
41982 			setState(5819);
41983 			_errHandler.sync(this);
41984 			_la = _input.LA(1);
41985 			while (_la==COMMA_) {
41986 				{
41987 				{
41988 				setState(5815);
41989 				match(COMMA_);
41990 				setState(5816);
41991 				principal();
41992 				}
41993 				}
41994 				setState(5821);
41995 				_errHandler.sync(this);
41996 				_la = _input.LA(1);
41997 			}
41998 			setState(5823);
41999 			_errHandler.sync(this);
42000 			_la = _input.LA(1);
42001 			if (_la==CASCADE) {
42002 				{
42003 				setState(5822);
42004 				match(CASCADE);
42005 				}
42006 			}
42007 
42008 			setState(5827);
42009 			_errHandler.sync(this);
42010 			_la = _input.LA(1);
42011 			if (_la==AS) {
42012 				{
42013 				setState(5825);
42014 				match(AS);
42015 				setState(5826);
42016 				principal();
42017 				}
42018 			}
42019 
42020 			}
42021 		}
42022 		catch (RecognitionException re) {
42023 			_localctx.exception = re;
42024 			_errHandler.reportError(this, re);
42025 			_errHandler.recover(this, re);
42026 		}
42027 		finally {
42028 			exitRule();
42029 		}
42030 		return _localctx;
42031 	}
42032 
42033 	public static class RevokeClassTypePrivilegesClauseContext extends ParserRuleContext {
42034 		public ClassTypePrivilegesContext classTypePrivileges() {
42035 			return getRuleContext(ClassTypePrivilegesContext.class,0);
42036 		}
42037 		public List<PrincipalContext> principal() {
42038 			return getRuleContexts(PrincipalContext.class);
42039 		}
42040 		public PrincipalContext principal(int i) {
42041 			return getRuleContext(PrincipalContext.class,i);
42042 		}
42043 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
42044 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
42045 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
42046 		public OnClassTypeClauseContext onClassTypeClause() {
42047 			return getRuleContext(OnClassTypeClauseContext.class,0);
42048 		}
42049 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42050 		public TerminalNode COMMA_(int i) {
42051 			return getToken(SQLServerStatementParser.COMMA_, i);
42052 		}
42053 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
42054 		public RevokeClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
42055 			super(parent, invokingState);
42056 		}
42057 		@Override public int getRuleIndex() { return RULE_revokeClassTypePrivilegesClause; }
42058 		@Override
42059 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42060 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevokeClassTypePrivilegesClause(this);
42061 			else return visitor.visitChildren(this);
42062 		}
42063 	}
42064 
42065 	public final RevokeClassTypePrivilegesClauseContext revokeClassTypePrivilegesClause() throws RecognitionException {
42066 		RevokeClassTypePrivilegesClauseContext _localctx = new RevokeClassTypePrivilegesClauseContext(_ctx, getState());
42067 		enterRule(_localctx, 816, RULE_revokeClassTypePrivilegesClause);
42068 		int _la;
42069 		try {
42070 			enterOuterAlt(_localctx, 1);
42071 			{
42072 			setState(5829);
42073 			classTypePrivileges();
42074 			setState(5832);
42075 			_errHandler.sync(this);
42076 			_la = _input.LA(1);
42077 			if (_la==ON) {
42078 				{
42079 				setState(5830);
42080 				match(ON);
42081 				setState(5831);
42082 				onClassTypeClause();
42083 				}
42084 			}
42085 
42086 			setState(5834);
42087 			_la = _input.LA(1);
42088 			if ( !(_la==FROM || _la==TO) ) {
42089 			_errHandler.recoverInline(this);
42090 			}
42091 			else {
42092 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42093 				_errHandler.reportMatch(this);
42094 				consume();
42095 			}
42096 			setState(5835);
42097 			principal();
42098 			setState(5840);
42099 			_errHandler.sync(this);
42100 			_la = _input.LA(1);
42101 			while (_la==COMMA_) {
42102 				{
42103 				{
42104 				setState(5836);
42105 				match(COMMA_);
42106 				setState(5837);
42107 				principal();
42108 				}
42109 				}
42110 				setState(5842);
42111 				_errHandler.sync(this);
42112 				_la = _input.LA(1);
42113 			}
42114 			setState(5844);
42115 			_errHandler.sync(this);
42116 			_la = _input.LA(1);
42117 			if (_la==CASCADE) {
42118 				{
42119 				setState(5843);
42120 				match(CASCADE);
42121 				}
42122 			}
42123 
42124 			}
42125 		}
42126 		catch (RecognitionException re) {
42127 			_localctx.exception = re;
42128 			_errHandler.reportError(this, re);
42129 			_errHandler.recover(this, re);
42130 		}
42131 		finally {
42132 			exitRule();
42133 		}
42134 		return _localctx;
42135 	}
42136 
42137 	public static class DenyContext extends ParserRuleContext {
42138 		public TerminalNode DENY() { return getToken(SQLServerStatementParser.DENY, 0); }
42139 		public DenyClassPrivilegesClauseContext denyClassPrivilegesClause() {
42140 			return getRuleContext(DenyClassPrivilegesClauseContext.class,0);
42141 		}
42142 		public DenyClassTypePrivilegesClauseContext denyClassTypePrivilegesClause() {
42143 			return getRuleContext(DenyClassTypePrivilegesClauseContext.class,0);
42144 		}
42145 		public DenyContext(ParserRuleContext parent, int invokingState) {
42146 			super(parent, invokingState);
42147 		}
42148 		@Override public int getRuleIndex() { return RULE_deny; }
42149 		@Override
42150 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42151 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDeny(this);
42152 			else return visitor.visitChildren(this);
42153 		}
42154 	}
42155 
42156 	public final DenyContext deny() throws RecognitionException {
42157 		DenyContext _localctx = new DenyContext(_ctx, getState());
42158 		enterRule(_localctx, 818, RULE_deny);
42159 		try {
42160 			enterOuterAlt(_localctx, 1);
42161 			{
42162 			setState(5846);
42163 			match(DENY);
42164 			setState(5849);
42165 			_errHandler.sync(this);
42166 			switch ( getInterpreter().adaptivePredict(_input,688,_ctx) ) {
42167 			case 1:
42168 				{
42169 				setState(5847);
42170 				denyClassPrivilegesClause();
42171 				}
42172 				break;
42173 			case 2:
42174 				{
42175 				setState(5848);
42176 				denyClassTypePrivilegesClause();
42177 				}
42178 				break;
42179 			}
42180 			}
42181 		}
42182 		catch (RecognitionException re) {
42183 			_localctx.exception = re;
42184 			_errHandler.reportError(this, re);
42185 			_errHandler.recover(this, re);
42186 		}
42187 		finally {
42188 			exitRule();
42189 		}
42190 		return _localctx;
42191 	}
42192 
42193 	public static class DenyClassPrivilegesClauseContext extends ParserRuleContext {
42194 		public ClassPrivilegesContext classPrivileges() {
42195 			return getRuleContext(ClassPrivilegesContext.class,0);
42196 		}
42197 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
42198 		public List<PrincipalContext> principal() {
42199 			return getRuleContexts(PrincipalContext.class);
42200 		}
42201 		public PrincipalContext principal(int i) {
42202 			return getRuleContext(PrincipalContext.class,i);
42203 		}
42204 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
42205 		public OnClassClauseContext onClassClause() {
42206 			return getRuleContext(OnClassClauseContext.class,0);
42207 		}
42208 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42209 		public TerminalNode COMMA_(int i) {
42210 			return getToken(SQLServerStatementParser.COMMA_, i);
42211 		}
42212 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
42213 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
42214 		public DenyClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
42215 			super(parent, invokingState);
42216 		}
42217 		@Override public int getRuleIndex() { return RULE_denyClassPrivilegesClause; }
42218 		@Override
42219 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42220 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDenyClassPrivilegesClause(this);
42221 			else return visitor.visitChildren(this);
42222 		}
42223 	}
42224 
42225 	public final DenyClassPrivilegesClauseContext denyClassPrivilegesClause() throws RecognitionException {
42226 		DenyClassPrivilegesClauseContext _localctx = new DenyClassPrivilegesClauseContext(_ctx, getState());
42227 		enterRule(_localctx, 820, RULE_denyClassPrivilegesClause);
42228 		int _la;
42229 		try {
42230 			enterOuterAlt(_localctx, 1);
42231 			{
42232 			setState(5851);
42233 			classPrivileges();
42234 			setState(5854);
42235 			_errHandler.sync(this);
42236 			_la = _input.LA(1);
42237 			if (_la==ON) {
42238 				{
42239 				setState(5852);
42240 				match(ON);
42241 				setState(5853);
42242 				onClassClause();
42243 				}
42244 			}
42245 
42246 			setState(5856);
42247 			match(TO);
42248 			setState(5857);
42249 			principal();
42250 			setState(5862);
42251 			_errHandler.sync(this);
42252 			_la = _input.LA(1);
42253 			while (_la==COMMA_) {
42254 				{
42255 				{
42256 				setState(5858);
42257 				match(COMMA_);
42258 				setState(5859);
42259 				principal();
42260 				}
42261 				}
42262 				setState(5864);
42263 				_errHandler.sync(this);
42264 				_la = _input.LA(1);
42265 			}
42266 			setState(5866);
42267 			_errHandler.sync(this);
42268 			_la = _input.LA(1);
42269 			if (_la==CASCADE) {
42270 				{
42271 				setState(5865);
42272 				match(CASCADE);
42273 				}
42274 			}
42275 
42276 			setState(5870);
42277 			_errHandler.sync(this);
42278 			_la = _input.LA(1);
42279 			if (_la==AS) {
42280 				{
42281 				setState(5868);
42282 				match(AS);
42283 				setState(5869);
42284 				principal();
42285 				}
42286 			}
42287 
42288 			}
42289 		}
42290 		catch (RecognitionException re) {
42291 			_localctx.exception = re;
42292 			_errHandler.reportError(this, re);
42293 			_errHandler.recover(this, re);
42294 		}
42295 		finally {
42296 			exitRule();
42297 		}
42298 		return _localctx;
42299 	}
42300 
42301 	public static class DenyClassTypePrivilegesClauseContext extends ParserRuleContext {
42302 		public ClassTypePrivilegesContext classTypePrivileges() {
42303 			return getRuleContext(ClassTypePrivilegesContext.class,0);
42304 		}
42305 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
42306 		public List<PrincipalContext> principal() {
42307 			return getRuleContexts(PrincipalContext.class);
42308 		}
42309 		public PrincipalContext principal(int i) {
42310 			return getRuleContext(PrincipalContext.class,i);
42311 		}
42312 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
42313 		public OnClassTypeClauseContext onClassTypeClause() {
42314 			return getRuleContext(OnClassTypeClauseContext.class,0);
42315 		}
42316 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42317 		public TerminalNode COMMA_(int i) {
42318 			return getToken(SQLServerStatementParser.COMMA_, i);
42319 		}
42320 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
42321 		public DenyClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
42322 			super(parent, invokingState);
42323 		}
42324 		@Override public int getRuleIndex() { return RULE_denyClassTypePrivilegesClause; }
42325 		@Override
42326 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42327 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDenyClassTypePrivilegesClause(this);
42328 			else return visitor.visitChildren(this);
42329 		}
42330 	}
42331 
42332 	public final DenyClassTypePrivilegesClauseContext denyClassTypePrivilegesClause() throws RecognitionException {
42333 		DenyClassTypePrivilegesClauseContext _localctx = new DenyClassTypePrivilegesClauseContext(_ctx, getState());
42334 		enterRule(_localctx, 822, RULE_denyClassTypePrivilegesClause);
42335 		int _la;
42336 		try {
42337 			enterOuterAlt(_localctx, 1);
42338 			{
42339 			setState(5872);
42340 			classTypePrivileges();
42341 			setState(5875);
42342 			_errHandler.sync(this);
42343 			_la = _input.LA(1);
42344 			if (_la==ON) {
42345 				{
42346 				setState(5873);
42347 				match(ON);
42348 				setState(5874);
42349 				onClassTypeClause();
42350 				}
42351 			}
42352 
42353 			setState(5877);
42354 			match(TO);
42355 			setState(5878);
42356 			principal();
42357 			setState(5883);
42358 			_errHandler.sync(this);
42359 			_la = _input.LA(1);
42360 			while (_la==COMMA_) {
42361 				{
42362 				{
42363 				setState(5879);
42364 				match(COMMA_);
42365 				setState(5880);
42366 				principal();
42367 				}
42368 				}
42369 				setState(5885);
42370 				_errHandler.sync(this);
42371 				_la = _input.LA(1);
42372 			}
42373 			setState(5887);
42374 			_errHandler.sync(this);
42375 			_la = _input.LA(1);
42376 			if (_la==CASCADE) {
42377 				{
42378 				setState(5886);
42379 				match(CASCADE);
42380 				}
42381 			}
42382 
42383 			}
42384 		}
42385 		catch (RecognitionException re) {
42386 			_localctx.exception = re;
42387 			_errHandler.reportError(this, re);
42388 			_errHandler.recover(this, re);
42389 		}
42390 		finally {
42391 			exitRule();
42392 		}
42393 		return _localctx;
42394 	}
42395 
42396 	public static class OptionForClauseContext extends ParserRuleContext {
42397 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
42398 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
42399 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
42400 		public OptionForClauseContext(ParserRuleContext parent, int invokingState) {
42401 			super(parent, invokingState);
42402 		}
42403 		@Override public int getRuleIndex() { return RULE_optionForClause; }
42404 		@Override
42405 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42406 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionForClause(this);
42407 			else return visitor.visitChildren(this);
42408 		}
42409 	}
42410 
42411 	public final OptionForClauseContext optionForClause() throws RecognitionException {
42412 		OptionForClauseContext _localctx = new OptionForClauseContext(_ctx, getState());
42413 		enterRule(_localctx, 824, RULE_optionForClause);
42414 		try {
42415 			enterOuterAlt(_localctx, 1);
42416 			{
42417 			setState(5889);
42418 			match(GRANT);
42419 			setState(5890);
42420 			match(OPTION);
42421 			setState(5891);
42422 			match(FOR);
42423 			}
42424 		}
42425 		catch (RecognitionException re) {
42426 			_localctx.exception = re;
42427 			_errHandler.reportError(this, re);
42428 			_errHandler.recover(this, re);
42429 		}
42430 		finally {
42431 			exitRule();
42432 		}
42433 		return _localctx;
42434 	}
42435 
42436 	public static class PrivilegeTypeContext extends ParserRuleContext {
42437 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
42438 		public TerminalNode PRIVILEGES() { return getToken(SQLServerStatementParser.PRIVILEGES, 0); }
42439 		public AssemblyPermissionContext assemblyPermission() {
42440 			return getRuleContext(AssemblyPermissionContext.class,0);
42441 		}
42442 		public AsymmetricKeyPermissionContext asymmetricKeyPermission() {
42443 			return getRuleContext(AsymmetricKeyPermissionContext.class,0);
42444 		}
42445 		public AvailabilityGroupPermissionContext availabilityGroupPermission() {
42446 			return getRuleContext(AvailabilityGroupPermissionContext.class,0);
42447 		}
42448 		public CertificatePermissionContext certificatePermission() {
42449 			return getRuleContext(CertificatePermissionContext.class,0);
42450 		}
42451 		public ObjectPermissionContext objectPermission() {
42452 			return getRuleContext(ObjectPermissionContext.class,0);
42453 		}
42454 		public SystemObjectPermissionContext systemObjectPermission() {
42455 			return getRuleContext(SystemObjectPermissionContext.class,0);
42456 		}
42457 		public DatabasePermissionContext databasePermission() {
42458 			return getRuleContext(DatabasePermissionContext.class,0);
42459 		}
42460 		public DatabasePrincipalPermissionContext databasePrincipalPermission() {
42461 			return getRuleContext(DatabasePrincipalPermissionContext.class,0);
42462 		}
42463 		public DatabaseScopedCredentialPermissionContext databaseScopedCredentialPermission() {
42464 			return getRuleContext(DatabaseScopedCredentialPermissionContext.class,0);
42465 		}
42466 		public EndpointPermissionContext endpointPermission() {
42467 			return getRuleContext(EndpointPermissionContext.class,0);
42468 		}
42469 		public FullTextPermissionContext fullTextPermission() {
42470 			return getRuleContext(FullTextPermissionContext.class,0);
42471 		}
42472 		public SchemaPermissionContext schemaPermission() {
42473 			return getRuleContext(SchemaPermissionContext.class,0);
42474 		}
42475 		public SearchPropertyListPermissionContext searchPropertyListPermission() {
42476 			return getRuleContext(SearchPropertyListPermissionContext.class,0);
42477 		}
42478 		public ServerPermissionContext serverPermission() {
42479 			return getRuleContext(ServerPermissionContext.class,0);
42480 		}
42481 		public ServerPrincipalPermissionContext serverPrincipalPermission() {
42482 			return getRuleContext(ServerPrincipalPermissionContext.class,0);
42483 		}
42484 		public ServiceBrokerPermissionContext serviceBrokerPermission() {
42485 			return getRuleContext(ServiceBrokerPermissionContext.class,0);
42486 		}
42487 		public SymmetricKeyPermissionContext symmetricKeyPermission() {
42488 			return getRuleContext(SymmetricKeyPermissionContext.class,0);
42489 		}
42490 		public TypePermissionContext typePermission() {
42491 			return getRuleContext(TypePermissionContext.class,0);
42492 		}
42493 		public XmlSchemaCollectionPermissionContext xmlSchemaCollectionPermission() {
42494 			return getRuleContext(XmlSchemaCollectionPermissionContext.class,0);
42495 		}
42496 		public PrivilegeTypeContext(ParserRuleContext parent, int invokingState) {
42497 			super(parent, invokingState);
42498 		}
42499 		@Override public int getRuleIndex() { return RULE_privilegeType; }
42500 		@Override
42501 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42502 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrivilegeType(this);
42503 			else return visitor.visitChildren(this);
42504 		}
42505 	}
42506 
42507 	public final PrivilegeTypeContext privilegeType() throws RecognitionException {
42508 		PrivilegeTypeContext _localctx = new PrivilegeTypeContext(_ctx, getState());
42509 		enterRule(_localctx, 826, RULE_privilegeType);
42510 		int _la;
42511 		try {
42512 			setState(5916);
42513 			_errHandler.sync(this);
42514 			switch ( getInterpreter().adaptivePredict(_input,697,_ctx) ) {
42515 			case 1:
42516 				enterOuterAlt(_localctx, 1);
42517 				{
42518 				setState(5893);
42519 				match(ALL);
42520 				setState(5895);
42521 				_errHandler.sync(this);
42522 				_la = _input.LA(1);
42523 				if (_la==PRIVILEGES) {
42524 					{
42525 					setState(5894);
42526 					match(PRIVILEGES);
42527 					}
42528 				}
42529 
42530 				}
42531 				break;
42532 			case 2:
42533 				enterOuterAlt(_localctx, 2);
42534 				{
42535 				setState(5897);
42536 				assemblyPermission();
42537 				}
42538 				break;
42539 			case 3:
42540 				enterOuterAlt(_localctx, 3);
42541 				{
42542 				setState(5898);
42543 				asymmetricKeyPermission();
42544 				}
42545 				break;
42546 			case 4:
42547 				enterOuterAlt(_localctx, 4);
42548 				{
42549 				setState(5899);
42550 				availabilityGroupPermission();
42551 				}
42552 				break;
42553 			case 5:
42554 				enterOuterAlt(_localctx, 5);
42555 				{
42556 				setState(5900);
42557 				certificatePermission();
42558 				}
42559 				break;
42560 			case 6:
42561 				enterOuterAlt(_localctx, 6);
42562 				{
42563 				setState(5901);
42564 				objectPermission();
42565 				}
42566 				break;
42567 			case 7:
42568 				enterOuterAlt(_localctx, 7);
42569 				{
42570 				setState(5902);
42571 				systemObjectPermission();
42572 				}
42573 				break;
42574 			case 8:
42575 				enterOuterAlt(_localctx, 8);
42576 				{
42577 				setState(5903);
42578 				databasePermission();
42579 				}
42580 				break;
42581 			case 9:
42582 				enterOuterAlt(_localctx, 9);
42583 				{
42584 				setState(5904);
42585 				databasePrincipalPermission();
42586 				}
42587 				break;
42588 			case 10:
42589 				enterOuterAlt(_localctx, 10);
42590 				{
42591 				setState(5905);
42592 				databaseScopedCredentialPermission();
42593 				}
42594 				break;
42595 			case 11:
42596 				enterOuterAlt(_localctx, 11);
42597 				{
42598 				setState(5906);
42599 				endpointPermission();
42600 				}
42601 				break;
42602 			case 12:
42603 				enterOuterAlt(_localctx, 12);
42604 				{
42605 				setState(5907);
42606 				fullTextPermission();
42607 				}
42608 				break;
42609 			case 13:
42610 				enterOuterAlt(_localctx, 13);
42611 				{
42612 				setState(5908);
42613 				schemaPermission();
42614 				}
42615 				break;
42616 			case 14:
42617 				enterOuterAlt(_localctx, 14);
42618 				{
42619 				setState(5909);
42620 				searchPropertyListPermission();
42621 				}
42622 				break;
42623 			case 15:
42624 				enterOuterAlt(_localctx, 15);
42625 				{
42626 				setState(5910);
42627 				serverPermission();
42628 				}
42629 				break;
42630 			case 16:
42631 				enterOuterAlt(_localctx, 16);
42632 				{
42633 				setState(5911);
42634 				serverPrincipalPermission();
42635 				}
42636 				break;
42637 			case 17:
42638 				enterOuterAlt(_localctx, 17);
42639 				{
42640 				setState(5912);
42641 				serviceBrokerPermission();
42642 				}
42643 				break;
42644 			case 18:
42645 				enterOuterAlt(_localctx, 18);
42646 				{
42647 				setState(5913);
42648 				symmetricKeyPermission();
42649 				}
42650 				break;
42651 			case 19:
42652 				enterOuterAlt(_localctx, 19);
42653 				{
42654 				setState(5914);
42655 				typePermission();
42656 				}
42657 				break;
42658 			case 20:
42659 				enterOuterAlt(_localctx, 20);
42660 				{
42661 				setState(5915);
42662 				xmlSchemaCollectionPermission();
42663 				}
42664 				break;
42665 			}
42666 		}
42667 		catch (RecognitionException re) {
42668 			_localctx.exception = re;
42669 			_errHandler.reportError(this, re);
42670 			_errHandler.recover(this, re);
42671 		}
42672 		finally {
42673 			exitRule();
42674 		}
42675 		return _localctx;
42676 	}
42677 
42678 	public static class ObjectPermissionContext extends ParserRuleContext {
42679 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
42680 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
42681 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
42682 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
42683 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
42684 		public TerminalNode RECEIVE() { return getToken(SQLServerStatementParser.RECEIVE, 0); }
42685 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
42686 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
42687 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
42688 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
42689 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
42690 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
42691 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
42692 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
42693 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
42694 		public ObjectPermissionContext(ParserRuleContext parent, int invokingState) {
42695 			super(parent, invokingState);
42696 		}
42697 		@Override public int getRuleIndex() { return RULE_objectPermission; }
42698 		@Override
42699 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42700 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitObjectPermission(this);
42701 			else return visitor.visitChildren(this);
42702 		}
42703 	}
42704 
42705 	public final ObjectPermissionContext objectPermission() throws RecognitionException {
42706 		ObjectPermissionContext _localctx = new ObjectPermissionContext(_ctx, getState());
42707 		enterRule(_localctx, 828, RULE_objectPermission);
42708 		try {
42709 			setState(5934);
42710 			_errHandler.sync(this);
42711 			switch ( getInterpreter().adaptivePredict(_input,698,_ctx) ) {
42712 			case 1:
42713 				enterOuterAlt(_localctx, 1);
42714 				{
42715 				setState(5918);
42716 				match(ALTER);
42717 				}
42718 				break;
42719 			case 2:
42720 				enterOuterAlt(_localctx, 2);
42721 				{
42722 				setState(5919);
42723 				match(CONTROL);
42724 				}
42725 				break;
42726 			case 3:
42727 				enterOuterAlt(_localctx, 3);
42728 				{
42729 				setState(5920);
42730 				match(DELETE);
42731 				}
42732 				break;
42733 			case 4:
42734 				enterOuterAlt(_localctx, 4);
42735 				{
42736 				setState(5921);
42737 				match(EXECUTE);
42738 				}
42739 				break;
42740 			case 5:
42741 				enterOuterAlt(_localctx, 5);
42742 				{
42743 				setState(5922);
42744 				match(INSERT);
42745 				}
42746 				break;
42747 			case 6:
42748 				enterOuterAlt(_localctx, 6);
42749 				{
42750 				setState(5923);
42751 				match(RECEIVE);
42752 				}
42753 				break;
42754 			case 7:
42755 				enterOuterAlt(_localctx, 7);
42756 				{
42757 				setState(5924);
42758 				match(REFERENCES);
42759 				}
42760 				break;
42761 			case 8:
42762 				enterOuterAlt(_localctx, 8);
42763 				{
42764 				setState(5925);
42765 				match(SELECT);
42766 				}
42767 				break;
42768 			case 9:
42769 				enterOuterAlt(_localctx, 9);
42770 				{
42771 				setState(5926);
42772 				match(TAKE);
42773 				setState(5927);
42774 				match(OWNERSHIP);
42775 				}
42776 				break;
42777 			case 10:
42778 				enterOuterAlt(_localctx, 10);
42779 				{
42780 				setState(5928);
42781 				match(UPDATE);
42782 				}
42783 				break;
42784 			case 11:
42785 				enterOuterAlt(_localctx, 11);
42786 				{
42787 				setState(5929);
42788 				match(VIEW);
42789 				setState(5930);
42790 				match(CHANGE);
42791 				setState(5931);
42792 				match(TRACKING);
42793 				}
42794 				break;
42795 			case 12:
42796 				enterOuterAlt(_localctx, 12);
42797 				{
42798 				setState(5932);
42799 				match(VIEW);
42800 				setState(5933);
42801 				match(DEFINITION);
42802 				}
42803 				break;
42804 			}
42805 		}
42806 		catch (RecognitionException re) {
42807 			_localctx.exception = re;
42808 			_errHandler.reportError(this, re);
42809 			_errHandler.recover(this, re);
42810 		}
42811 		finally {
42812 			exitRule();
42813 		}
42814 		return _localctx;
42815 	}
42816 
42817 	public static class ServerPermissionContext extends ParserRuleContext {
42818 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
42819 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
42820 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
42821 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
42822 		public TerminalNode RESOURCES() { return getToken(SQLServerStatementParser.RESOURCES, 0); }
42823 		public TerminalNode SETTINGS() { return getToken(SQLServerStatementParser.SETTINGS, 0); }
42824 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
42825 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
42826 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
42827 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
42828 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
42829 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
42830 		public TerminalNode CONNECTION() { return getToken(SQLServerStatementParser.CONNECTION, 0); }
42831 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
42832 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
42833 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
42834 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
42835 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
42836 		public TerminalNode SESSION() { return getToken(SQLServerStatementParser.SESSION, 0); }
42837 		public TerminalNode LINKED() { return getToken(SQLServerStatementParser.LINKED, 0); }
42838 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
42839 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
42840 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
42841 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
42842 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
42843 		public TerminalNode SQL() { return getToken(SQLServerStatementParser.SQL, 0); }
42844 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
42845 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
42846 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
42847 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
42848 		public TerminalNode ACCESS() { return getToken(SQLServerStatementParser.ACCESS, 0); }
42849 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
42850 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
42851 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
42852 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
42853 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
42854 		public TerminalNode SECURABLES() { return getToken(SQLServerStatementParser.SECURABLES, 0); }
42855 		public TerminalNode SHUTDOWN() { return getToken(SQLServerStatementParser.SHUTDOWN, 0); }
42856 		public TerminalNode UNSAFE() { return getToken(SQLServerStatementParser.UNSAFE, 0); }
42857 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
42858 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
42859 		public ServerPermissionContext(ParserRuleContext parent, int invokingState) {
42860 			super(parent, invokingState);
42861 		}
42862 		@Override public int getRuleIndex() { return RULE_serverPermission; }
42863 		@Override
42864 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42865 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServerPermission(this);
42866 			else return visitor.visitChildren(this);
42867 		}
42868 	}
42869 
42870 	public final ServerPermissionContext serverPermission() throws RecognitionException {
42871 		ServerPermissionContext _localctx = new ServerPermissionContext(_ctx, getState());
42872 		enterRule(_localctx, 830, RULE_serverPermission);
42873 		int _la;
42874 		try {
42875 			setState(6013);
42876 			_errHandler.sync(this);
42877 			switch ( getInterpreter().adaptivePredict(_input,702,_ctx) ) {
42878 			case 1:
42879 				enterOuterAlt(_localctx, 1);
42880 				{
42881 				setState(5936);
42882 				match(ADMINISTER);
42883 				setState(5937);
42884 				match(BULK);
42885 				setState(5938);
42886 				match(OPERATIONS);
42887 				}
42888 				break;
42889 			case 2:
42890 				enterOuterAlt(_localctx, 2);
42891 				{
42892 				setState(5939);
42893 				match(ALTER);
42894 				setState(5945);
42895 				_errHandler.sync(this);
42896 				switch (_input.LA(1)) {
42897 				case RESOURCES:
42898 					{
42899 					setState(5940);
42900 					match(RESOURCES);
42901 					}
42902 					break;
42903 				case SETTINGS:
42904 					{
42905 					setState(5941);
42906 					match(SETTINGS);
42907 					}
42908 					break;
42909 				case TRACE:
42910 					{
42911 					setState(5942);
42912 					match(TRACE);
42913 					}
42914 					break;
42915 				case SERVER:
42916 					{
42917 					setState(5943);
42918 					match(SERVER);
42919 					setState(5944);
42920 					match(STATE);
42921 					}
42922 					break;
42923 				default:
42924 					throw new NoViableAltException(this);
42925 				}
42926 				}
42927 				break;
42928 			case 3:
42929 				enterOuterAlt(_localctx, 3);
42930 				{
42931 				setState(5947);
42932 				match(ALTER);
42933 				setState(5948);
42934 				match(ANY);
42935 				setState(5966);
42936 				_errHandler.sync(this);
42937 				switch ( getInterpreter().adaptivePredict(_input,700,_ctx) ) {
42938 				case 1:
42939 					{
42940 					setState(5949);
42941 					match(AVAILABILITY);
42942 					setState(5950);
42943 					match(GROUP);
42944 					}
42945 					break;
42946 				case 2:
42947 					{
42948 					setState(5951);
42949 					match(CONNECTION);
42950 					}
42951 					break;
42952 				case 3:
42953 					{
42954 					setState(5952);
42955 					match(CREDENTIAL);
42956 					}
42957 					break;
42958 				case 4:
42959 					{
42960 					setState(5953);
42961 					match(DATABASE);
42962 					}
42963 					break;
42964 				case 5:
42965 					{
42966 					setState(5954);
42967 					match(ENDPOINT);
42968 					}
42969 					break;
42970 				case 6:
42971 					{
42972 					setState(5955);
42973 					match(EVENT);
42974 					setState(5956);
42975 					match(NOTIFICATION);
42976 					}
42977 					break;
42978 				case 7:
42979 					{
42980 					setState(5957);
42981 					match(EVENT);
42982 					setState(5958);
42983 					match(SESSION);
42984 					}
42985 					break;
42986 				case 8:
42987 					{
42988 					setState(5959);
42989 					match(LINKED);
42990 					setState(5960);
42991 					match(SERVER);
42992 					}
42993 					break;
42994 				case 9:
42995 					{
42996 					setState(5961);
42997 					match(LOGIN);
42998 					}
42999 					break;
43000 				case 10:
43001 					{
43002 					setState(5962);
43003 					match(SERVER);
43004 					setState(5963);
43005 					match(AUDIT);
43006 					}
43007 					break;
43008 				case 11:
43009 					{
43010 					setState(5964);
43011 					match(SERVER);
43012 					setState(5965);
43013 					match(ROLE);
43014 					}
43015 					break;
43016 				}
43017 				}
43018 				break;
43019 			case 4:
43020 				enterOuterAlt(_localctx, 4);
43021 				{
43022 				setState(5968);
43023 				match(AUTHENTICATE);
43024 				setState(5969);
43025 				match(SERVER);
43026 				}
43027 				break;
43028 			case 5:
43029 				enterOuterAlt(_localctx, 5);
43030 				{
43031 				setState(5970);
43032 				match(CONNECT);
43033 				setState(5971);
43034 				match(ANY);
43035 				setState(5972);
43036 				match(DATABASE);
43037 				}
43038 				break;
43039 			case 6:
43040 				enterOuterAlt(_localctx, 6);
43041 				{
43042 				setState(5973);
43043 				match(CONNECT);
43044 				setState(5974);
43045 				match(SQL);
43046 				}
43047 				break;
43048 			case 7:
43049 				enterOuterAlt(_localctx, 7);
43050 				{
43051 				setState(5975);
43052 				match(CONTROL);
43053 				setState(5976);
43054 				match(SERVER);
43055 				}
43056 				break;
43057 			case 8:
43058 				enterOuterAlt(_localctx, 8);
43059 				{
43060 				setState(5977);
43061 				match(CREATE);
43062 				setState(5978);
43063 				match(ANY);
43064 				setState(5979);
43065 				match(DATABASE);
43066 				}
43067 				break;
43068 			case 9:
43069 				enterOuterAlt(_localctx, 9);
43070 				{
43071 				setState(5980);
43072 				match(CREATE);
43073 				setState(5992);
43074 				_errHandler.sync(this);
43075 				switch (_input.LA(1)) {
43076 				case AVAILABILITY:
43077 					{
43078 					setState(5981);
43079 					match(AVAILABILITY);
43080 					setState(5982);
43081 					match(GROUP);
43082 					}
43083 					break;
43084 				case DDL:
43085 					{
43086 					setState(5983);
43087 					match(DDL);
43088 					setState(5984);
43089 					match(EVENT);
43090 					setState(5985);
43091 					match(NOTIFICATION);
43092 					}
43093 					break;
43094 				case ENDPOINT:
43095 					{
43096 					setState(5986);
43097 					match(ENDPOINT);
43098 					}
43099 					break;
43100 				case SERVER:
43101 					{
43102 					setState(5987);
43103 					match(SERVER);
43104 					setState(5988);
43105 					match(ROLE);
43106 					}
43107 					break;
43108 				case TRACE:
43109 					{
43110 					setState(5989);
43111 					match(TRACE);
43112 					setState(5990);
43113 					match(EVENT);
43114 					setState(5991);
43115 					match(NOTIFICATION);
43116 					}
43117 					break;
43118 				default:
43119 					throw new NoViableAltException(this);
43120 				}
43121 				}
43122 				break;
43123 			case 10:
43124 				enterOuterAlt(_localctx, 10);
43125 				{
43126 				setState(5994);
43127 				match(EXTERNAL);
43128 				setState(5995);
43129 				match(ACCESS);
43130 				setState(5996);
43131 				match(ASSEMBLY);
43132 				}
43133 				break;
43134 			case 11:
43135 				enterOuterAlt(_localctx, 11);
43136 				{
43137 				setState(5997);
43138 				match(IMPERSONATE);
43139 				setState(5998);
43140 				match(ANY);
43141 				setState(5999);
43142 				match(LOGIN);
43143 				}
43144 				break;
43145 			case 12:
43146 				enterOuterAlt(_localctx, 12);
43147 				{
43148 				setState(6000);
43149 				match(SELECT);
43150 				setState(6001);
43151 				match(ALL);
43152 				setState(6002);
43153 				match(USER);
43154 				setState(6003);
43155 				match(SECURABLES);
43156 				}
43157 				break;
43158 			case 13:
43159 				enterOuterAlt(_localctx, 13);
43160 				{
43161 				setState(6004);
43162 				match(SHUTDOWN);
43163 				}
43164 				break;
43165 			case 14:
43166 				enterOuterAlt(_localctx, 14);
43167 				{
43168 				setState(6005);
43169 				match(UNSAFE);
43170 				setState(6006);
43171 				match(ASSEMBLY);
43172 				}
43173 				break;
43174 			case 15:
43175 				enterOuterAlt(_localctx, 15);
43176 				{
43177 				setState(6007);
43178 				match(VIEW);
43179 				setState(6008);
43180 				match(ANY);
43181 				setState(6009);
43182 				_la = _input.LA(1);
43183 				if ( !(_la==DATABASE || _la==DEFINITION) ) {
43184 				_errHandler.recoverInline(this);
43185 				}
43186 				else {
43187 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
43188 					_errHandler.reportMatch(this);
43189 					consume();
43190 				}
43191 				}
43192 				break;
43193 			case 16:
43194 				enterOuterAlt(_localctx, 16);
43195 				{
43196 				setState(6010);
43197 				match(VIEW);
43198 				setState(6011);
43199 				match(SERVER);
43200 				setState(6012);
43201 				match(STATE);
43202 				}
43203 				break;
43204 			}
43205 		}
43206 		catch (RecognitionException re) {
43207 			_localctx.exception = re;
43208 			_errHandler.reportError(this, re);
43209 			_errHandler.recover(this, re);
43210 		}
43211 		finally {
43212 			exitRule();
43213 		}
43214 		return _localctx;
43215 	}
43216 
43217 	public static class ServerPrincipalPermissionContext extends ParserRuleContext {
43218 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43219 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
43220 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
43221 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43222 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43223 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43224 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43225 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
43226 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
43227 		public ServerPrincipalPermissionContext(ParserRuleContext parent, int invokingState) {
43228 			super(parent, invokingState);
43229 		}
43230 		@Override public int getRuleIndex() { return RULE_serverPrincipalPermission; }
43231 		@Override
43232 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43233 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServerPrincipalPermission(this);
43234 			else return visitor.visitChildren(this);
43235 		}
43236 	}
43237 
43238 	public final ServerPrincipalPermissionContext serverPrincipalPermission() throws RecognitionException {
43239 		ServerPrincipalPermissionContext _localctx = new ServerPrincipalPermissionContext(_ctx, getState());
43240 		enterRule(_localctx, 832, RULE_serverPrincipalPermission);
43241 		int _la;
43242 		try {
43243 			setState(6033);
43244 			_errHandler.sync(this);
43245 			switch ( getInterpreter().adaptivePredict(_input,706,_ctx) ) {
43246 			case 1:
43247 				enterOuterAlt(_localctx, 1);
43248 				{
43249 				setState(6015);
43250 				match(CONTROL);
43251 				setState(6017);
43252 				_errHandler.sync(this);
43253 				_la = _input.LA(1);
43254 				if (_la==SERVER) {
43255 					{
43256 					setState(6016);
43257 					match(SERVER);
43258 					}
43259 				}
43260 
43261 				}
43262 				break;
43263 			case 2:
43264 				enterOuterAlt(_localctx, 2);
43265 				{
43266 				setState(6019);
43267 				match(IMPERSONATE);
43268 				}
43269 				break;
43270 			case 3:
43271 				enterOuterAlt(_localctx, 3);
43272 				{
43273 				setState(6020);
43274 				match(VIEW);
43275 				setState(6022);
43276 				_errHandler.sync(this);
43277 				_la = _input.LA(1);
43278 				if (_la==ANY) {
43279 					{
43280 					setState(6021);
43281 					match(ANY);
43282 					}
43283 				}
43284 
43285 				setState(6024);
43286 				match(DEFINITION);
43287 				}
43288 				break;
43289 			case 4:
43290 				enterOuterAlt(_localctx, 4);
43291 				{
43292 				setState(6025);
43293 				match(ALTER);
43294 				}
43295 				break;
43296 			case 5:
43297 				enterOuterAlt(_localctx, 5);
43298 				{
43299 				setState(6026);
43300 				match(ALTER);
43301 				setState(6027);
43302 				match(ANY);
43303 				setState(6031);
43304 				_errHandler.sync(this);
43305 				switch (_input.LA(1)) {
43306 				case LOGIN:
43307 					{
43308 					setState(6028);
43309 					match(LOGIN);
43310 					}
43311 					break;
43312 				case SERVER:
43313 					{
43314 					setState(6029);
43315 					match(SERVER);
43316 					setState(6030);
43317 					match(ROLE);
43318 					}
43319 					break;
43320 				default:
43321 					throw new NoViableAltException(this);
43322 				}
43323 				}
43324 				break;
43325 			}
43326 		}
43327 		catch (RecognitionException re) {
43328 			_localctx.exception = re;
43329 			_errHandler.reportError(this, re);
43330 			_errHandler.recover(this, re);
43331 		}
43332 		finally {
43333 			exitRule();
43334 		}
43335 		return _localctx;
43336 	}
43337 
43338 	public static class DatabasePermissionContext extends ParserRuleContext {
43339 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
43340 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
43341 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
43342 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
43343 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43344 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
43345 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43346 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
43347 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
43348 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
43349 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
43350 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
43351 		public TerminalNode CONNECTION() { return getToken(SQLServerStatementParser.CONNECTION, 0); }
43352 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
43353 		public TerminalNode MASTER() { return getToken(SQLServerStatementParser.MASTER, 0); }
43354 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43355 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
43356 		public TerminalNode DATASPACE() { return getToken(SQLServerStatementParser.DATASPACE, 0); }
43357 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
43358 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
43359 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
43360 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
43361 		public TerminalNode MASK() { return getToken(SQLServerStatementParser.MASK, 0); }
43362 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
43363 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
43364 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
43365 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
43366 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
43367 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
43368 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
43369 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
43370 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
43371 		public TerminalNode SECURITY() { return getToken(SQLServerStatementParser.SECURITY, 0); }
43372 		public TerminalNode POLICY() { return getToken(SQLServerStatementParser.POLICY, 0); }
43373 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
43374 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
43375 		public TerminalNode SESSION() { return getToken(SQLServerStatementParser.SESSION, 0); }
43376 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
43377 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
43378 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
43379 		public TerminalNode DATA() { return getToken(SQLServerStatementParser.DATA, 0); }
43380 		public TerminalNode SOURCE() { return getToken(SQLServerStatementParser.SOURCE, 0); }
43381 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
43382 		public TerminalNode FORMAT() { return getToken(SQLServerStatementParser.FORMAT, 0); }
43383 		public TerminalNode LIBRARY() { return getToken(SQLServerStatementParser.LIBRARY, 0); }
43384 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
43385 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
43386 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
43387 		public TerminalNode CONFIGURATION() { return getToken(SQLServerStatementParser.CONFIGURATION, 0); }
43388 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
43389 		public TerminalNode BACKUP() { return getToken(SQLServerStatementParser.BACKUP, 0); }
43390 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
43391 		public TerminalNode CHECKPOINT() { return getToken(SQLServerStatementParser.CHECKPOINT, 0); }
43392 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
43393 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
43394 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43395 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
43396 		public TerminalNode AGGREGATE() { return getToken(SQLServerStatementParser.AGGREGATE, 0); }
43397 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
43398 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
43399 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
43400 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
43401 		public TerminalNode RULE() { return getToken(SQLServerStatementParser.RULE, 0); }
43402 		public TerminalNode SYNONYM() { return getToken(SQLServerStatementParser.SYNONYM, 0); }
43403 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
43404 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43405 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
43406 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
43407 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
43408 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
43409 		public TerminalNode SCRIPT() { return getToken(SQLServerStatementParser.SCRIPT, 0); }
43410 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
43411 		public TerminalNode KILL() { return getToken(SQLServerStatementParser.KILL, 0); }
43412 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
43413 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
43414 		public TerminalNode SHOWPLAN() { return getToken(SQLServerStatementParser.SHOWPLAN, 0); }
43415 		public TerminalNode SUBSCRIBE() { return getToken(SQLServerStatementParser.SUBSCRIBE, 0); }
43416 		public TerminalNode QUERY() { return getToken(SQLServerStatementParser.QUERY, 0); }
43417 		public TerminalNode NOTIFICATIONS() { return getToken(SQLServerStatementParser.NOTIFICATIONS, 0); }
43418 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43419 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43420 		public TerminalNode UNMASK() { return getToken(SQLServerStatementParser.UNMASK, 0); }
43421 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
43422 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
43423 		public DatabasePermissionContext(ParserRuleContext parent, int invokingState) {
43424 			super(parent, invokingState);
43425 		}
43426 		@Override public int getRuleIndex() { return RULE_databasePermission; }
43427 		@Override
43428 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43429 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabasePermission(this);
43430 			else return visitor.visitChildren(this);
43431 		}
43432 	}
43433 
43434 	public final DatabasePermissionContext databasePermission() throws RecognitionException {
43435 		DatabasePermissionContext _localctx = new DatabasePermissionContext(_ctx, getState());
43436 		enterRule(_localctx, 834, RULE_databasePermission);
43437 		int _la;
43438 		try {
43439 			setState(6202);
43440 			_errHandler.sync(this);
43441 			switch ( getInterpreter().adaptivePredict(_input,719,_ctx) ) {
43442 			case 1:
43443 				enterOuterAlt(_localctx, 1);
43444 				{
43445 				setState(6035);
43446 				match(ADMINISTER);
43447 				setState(6036);
43448 				match(DATABASE);
43449 				setState(6037);
43450 				match(BULK);
43451 				setState(6038);
43452 				match(OPERATIONS);
43453 				}
43454 				break;
43455 			case 2:
43456 				enterOuterAlt(_localctx, 2);
43457 				{
43458 				setState(6039);
43459 				match(ALTER);
43460 				}
43461 				break;
43462 			case 3:
43463 				enterOuterAlt(_localctx, 3);
43464 				{
43465 				setState(6040);
43466 				match(ALTER);
43467 				setState(6041);
43468 				match(TRACE);
43469 				}
43470 				break;
43471 			case 4:
43472 				enterOuterAlt(_localctx, 4);
43473 				{
43474 				setState(6042);
43475 				match(ALTER);
43476 				setState(6043);
43477 				match(ANY);
43478 				setState(6101);
43479 				_errHandler.sync(this);
43480 				switch ( getInterpreter().adaptivePredict(_input,710,_ctx) ) {
43481 				case 1:
43482 					{
43483 					setState(6044);
43484 					match(APPLICATION);
43485 					setState(6045);
43486 					match(ROLE);
43487 					}
43488 					break;
43489 				case 2:
43490 					{
43491 					setState(6046);
43492 					match(ASSEMBLY);
43493 					}
43494 					break;
43495 				case 3:
43496 					{
43497 					setState(6051);
43498 					_errHandler.sync(this);
43499 					switch (_input.LA(1)) {
43500 					case SYMMETRIC:
43501 						{
43502 						setState(6047);
43503 						match(SYMMETRIC);
43504 						}
43505 						break;
43506 					case ASYMMETRIC:
43507 						{
43508 						setState(6048);
43509 						match(ASYMMETRIC);
43510 						}
43511 						break;
43512 					case COLUMN:
43513 						{
43514 						setState(6049);
43515 						match(COLUMN);
43516 						setState(6050);
43517 						match(ENCRYPTION);
43518 						}
43519 						break;
43520 					default:
43521 						throw new NoViableAltException(this);
43522 					}
43523 					setState(6053);
43524 					match(KEY);
43525 					}
43526 					break;
43527 				case 4:
43528 					{
43529 					setState(6054);
43530 					match(CERTIFICATE);
43531 					}
43532 					break;
43533 				case 5:
43534 					{
43535 					setState(6055);
43536 					match(CONNECTION);
43537 					}
43538 					break;
43539 				case 6:
43540 					{
43541 					setState(6056);
43542 					match(COLUMN);
43543 					setState(6057);
43544 					match(MASTER);
43545 					setState(6058);
43546 					match(KEY);
43547 					setState(6059);
43548 					match(DEFINITION);
43549 					}
43550 					break;
43551 				case 7:
43552 					{
43553 					setState(6060);
43554 					match(CONTRACT);
43555 					}
43556 					break;
43557 				case 8:
43558 					{
43559 					setState(6061);
43560 					match(DATABASE);
43561 					setState(6071);
43562 					_errHandler.sync(this);
43563 					switch ( getInterpreter().adaptivePredict(_input,708,_ctx) ) {
43564 					case 1:
43565 						{
43566 						setState(6062);
43567 						match(AUDIT);
43568 						}
43569 						break;
43570 					case 2:
43571 						{
43572 						setState(6063);
43573 						match(DDL);
43574 						setState(6064);
43575 						match(TRIGGER);
43576 						}
43577 						break;
43578 					case 3:
43579 						{
43580 						setState(6065);
43581 						match(EVENT);
43582 						setState(6066);
43583 						match(NOTIFICATION);
43584 						}
43585 						break;
43586 					case 4:
43587 						{
43588 						setState(6067);
43589 						match(EVENT);
43590 						setState(6068);
43591 						match(SESSION);
43592 						}
43593 						break;
43594 					case 5:
43595 						{
43596 						setState(6069);
43597 						match(SCOPED);
43598 						setState(6070);
43599 						match(CONFIGURATION);
43600 						}
43601 						break;
43602 					}
43603 					}
43604 					break;
43605 				case 9:
43606 					{
43607 					setState(6073);
43608 					match(DATASPACE);
43609 					}
43610 					break;
43611 				case 10:
43612 					{
43613 					setState(6074);
43614 					match(EVENT);
43615 					setState(6075);
43616 					_la = _input.LA(1);
43617 					if ( !(_la==SESSION || _la==NOTIFICATION) ) {
43618 					_errHandler.recoverInline(this);
43619 					}
43620 					else {
43621 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
43622 						_errHandler.reportMatch(this);
43623 						consume();
43624 					}
43625 					}
43626 					break;
43627 				case 11:
43628 					{
43629 					setState(6076);
43630 					match(EXTERNAL);
43631 					setState(6082);
43632 					_errHandler.sync(this);
43633 					switch (_input.LA(1)) {
43634 					case DATA:
43635 						{
43636 						setState(6077);
43637 						match(DATA);
43638 						setState(6078);
43639 						match(SOURCE);
43640 						}
43641 						break;
43642 					case FILE:
43643 						{
43644 						setState(6079);
43645 						match(FILE);
43646 						setState(6080);
43647 						match(FORMAT);
43648 						}
43649 						break;
43650 					case LIBRARY:
43651 						{
43652 						setState(6081);
43653 						match(LIBRARY);
43654 						}
43655 						break;
43656 					default:
43657 						throw new NoViableAltException(this);
43658 					}
43659 					}
43660 					break;
43661 				case 12:
43662 					{
43663 					setState(6084);
43664 					match(FULLTEXT);
43665 					setState(6085);
43666 					match(CATALOG);
43667 					}
43668 					break;
43669 				case 13:
43670 					{
43671 					setState(6086);
43672 					match(MASK);
43673 					}
43674 					break;
43675 				case 14:
43676 					{
43677 					setState(6087);
43678 					match(MESSAGE);
43679 					setState(6088);
43680 					match(TYPE);
43681 					}
43682 					break;
43683 				case 15:
43684 					{
43685 					setState(6089);
43686 					match(REMOTE);
43687 					setState(6090);
43688 					match(SERVICE);
43689 					setState(6091);
43690 					match(BINDING);
43691 					}
43692 					break;
43693 				case 16:
43694 					{
43695 					setState(6092);
43696 					match(ROLE);
43697 					}
43698 					break;
43699 				case 17:
43700 					{
43701 					setState(6093);
43702 					match(ROUTE);
43703 					}
43704 					break;
43705 				case 18:
43706 					{
43707 					setState(6094);
43708 					match(SERVER);
43709 					setState(6095);
43710 					match(AUDIT);
43711 					}
43712 					break;
43713 				case 19:
43714 					{
43715 					setState(6096);
43716 					match(SCHEMA);
43717 					}
43718 					break;
43719 				case 20:
43720 					{
43721 					setState(6097);
43722 					match(SECURITY);
43723 					setState(6098);
43724 					match(POLICY);
43725 					}
43726 					break;
43727 				case 21:
43728 					{
43729 					setState(6099);
43730 					match(SERVICE);
43731 					}
43732 					break;
43733 				case 22:
43734 					{
43735 					setState(6100);
43736 					match(USER);
43737 					}
43738 					break;
43739 				}
43740 				}
43741 				break;
43742 			case 5:
43743 				enterOuterAlt(_localctx, 5);
43744 				{
43745 				setState(6103);
43746 				match(AUTHENTICATE);
43747 				setState(6105);
43748 				_errHandler.sync(this);
43749 				_la = _input.LA(1);
43750 				if (_la==SERVER) {
43751 					{
43752 					setState(6104);
43753 					match(SERVER);
43754 					}
43755 				}
43756 
43757 				}
43758 				break;
43759 			case 6:
43760 				enterOuterAlt(_localctx, 6);
43761 				{
43762 				setState(6107);
43763 				match(BACKUP);
43764 				setState(6108);
43765 				_la = _input.LA(1);
43766 				if ( !(_la==DATABASE || _la==LOG) ) {
43767 				_errHandler.recoverInline(this);
43768 				}
43769 				else {
43770 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
43771 					_errHandler.reportMatch(this);
43772 					consume();
43773 				}
43774 				}
43775 				break;
43776 			case 7:
43777 				enterOuterAlt(_localctx, 7);
43778 				{
43779 				setState(6109);
43780 				match(CHECKPOINT);
43781 				}
43782 				break;
43783 			case 8:
43784 				enterOuterAlt(_localctx, 8);
43785 				{
43786 				setState(6110);
43787 				match(CONNECT);
43788 				}
43789 				break;
43790 			case 9:
43791 				enterOuterAlt(_localctx, 9);
43792 				{
43793 				setState(6111);
43794 				match(CONNECT);
43795 				setState(6113);
43796 				_errHandler.sync(this);
43797 				_la = _input.LA(1);
43798 				if (_la==REPLICATION) {
43799 					{
43800 					setState(6112);
43801 					match(REPLICATION);
43802 					}
43803 				}
43804 
43805 				}
43806 				break;
43807 			case 10:
43808 				enterOuterAlt(_localctx, 10);
43809 				{
43810 				setState(6115);
43811 				match(CONTROL);
43812 				setState(6117);
43813 				_errHandler.sync(this);
43814 				_la = _input.LA(1);
43815 				if (_la==SERVER) {
43816 					{
43817 					setState(6116);
43818 					match(SERVER);
43819 					}
43820 				}
43821 
43822 				}
43823 				break;
43824 			case 11:
43825 				enterOuterAlt(_localctx, 11);
43826 				{
43827 				setState(6119);
43828 				match(CREATE);
43829 				setState(6156);
43830 				_errHandler.sync(this);
43831 				switch ( getInterpreter().adaptivePredict(_input,715,_ctx) ) {
43832 				case 1:
43833 					{
43834 					setState(6120);
43835 					match(AGGREGATE);
43836 					}
43837 					break;
43838 				case 2:
43839 					{
43840 					setState(6121);
43841 					match(ASSEMBLY);
43842 					}
43843 					break;
43844 				case 3:
43845 					{
43846 					setState(6122);
43847 					_la = _input.LA(1);
43848 					if ( !(_la==SYMMETRIC || _la==ASYMMETRIC) ) {
43849 					_errHandler.recoverInline(this);
43850 					}
43851 					else {
43852 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
43853 						_errHandler.reportMatch(this);
43854 						consume();
43855 					}
43856 					setState(6123);
43857 					match(KEY);
43858 					}
43859 					break;
43860 				case 4:
43861 					{
43862 					setState(6124);
43863 					match(CERTIFICATE);
43864 					}
43865 					break;
43866 				case 5:
43867 					{
43868 					setState(6125);
43869 					match(CONTRACT);
43870 					}
43871 					break;
43872 				case 6:
43873 					{
43874 					setState(6126);
43875 					match(DATABASE);
43876 					}
43877 					break;
43878 				case 7:
43879 					{
43880 					setState(6128);
43881 					_errHandler.sync(this);
43882 					_la = _input.LA(1);
43883 					if (_la==DATABASE) {
43884 						{
43885 						setState(6127);
43886 						match(DATABASE);
43887 						}
43888 					}
43889 
43890 					setState(6130);
43891 					match(DDL);
43892 					setState(6131);
43893 					match(EVENT);
43894 					setState(6132);
43895 					match(NOTIFICATION);
43896 					}
43897 					break;
43898 				case 8:
43899 					{
43900 					setState(6133);
43901 					match(DEFAULT);
43902 					}
43903 					break;
43904 				case 9:
43905 					{
43906 					setState(6134);
43907 					match(FULLTEXT);
43908 					setState(6135);
43909 					match(CATALOG);
43910 					}
43911 					break;
43912 				case 10:
43913 					{
43914 					setState(6136);
43915 					match(FUNCTION);
43916 					}
43917 					break;
43918 				case 11:
43919 					{
43920 					setState(6137);
43921 					match(MESSAGE);
43922 					setState(6138);
43923 					match(TYPE);
43924 					}
43925 					break;
43926 				case 12:
43927 					{
43928 					setState(6139);
43929 					match(PROCEDURE);
43930 					}
43931 					break;
43932 				case 13:
43933 					{
43934 					setState(6140);
43935 					match(QUEUE);
43936 					}
43937 					break;
43938 				case 14:
43939 					{
43940 					setState(6141);
43941 					match(REMOTE);
43942 					setState(6142);
43943 					match(SERVICE);
43944 					setState(6143);
43945 					match(BINDING);
43946 					}
43947 					break;
43948 				case 15:
43949 					{
43950 					setState(6144);
43951 					match(ROLE);
43952 					}
43953 					break;
43954 				case 16:
43955 					{
43956 					setState(6145);
43957 					match(ROUTE);
43958 					}
43959 					break;
43960 				case 17:
43961 					{
43962 					setState(6146);
43963 					match(RULE);
43964 					}
43965 					break;
43966 				case 18:
43967 					{
43968 					setState(6147);
43969 					match(SCHEMA);
43970 					}
43971 					break;
43972 				case 19:
43973 					{
43974 					setState(6148);
43975 					match(SERVICE);
43976 					}
43977 					break;
43978 				case 20:
43979 					{
43980 					setState(6149);
43981 					match(SYNONYM);
43982 					}
43983 					break;
43984 				case 21:
43985 					{
43986 					setState(6150);
43987 					match(TABLE);
43988 					}
43989 					break;
43990 				case 22:
43991 					{
43992 					setState(6151);
43993 					match(TYPE);
43994 					}
43995 					break;
43996 				case 23:
43997 					{
43998 					setState(6152);
43999 					match(VIEW);
44000 					}
44001 					break;
44002 				case 24:
44003 					{
44004 					setState(6153);
44005 					match(XML);
44006 					setState(6154);
44007 					match(SCHEMA);
44008 					setState(6155);
44009 					match(COLLECTION);
44010 					}
44011 					break;
44012 				}
44013 				}
44014 				break;
44015 			case 12:
44016 				enterOuterAlt(_localctx, 12);
44017 				{
44018 				setState(6158);
44019 				match(DELETE);
44020 				}
44021 				break;
44022 			case 13:
44023 				enterOuterAlt(_localctx, 13);
44024 				{
44025 				setState(6159);
44026 				match(EXECUTE);
44027 				}
44028 				break;
44029 			case 14:
44030 				enterOuterAlt(_localctx, 14);
44031 				{
44032 				setState(6160);
44033 				match(EXECUTE);
44034 				setState(6162);
44035 				_errHandler.sync(this);
44036 				_la = _input.LA(1);
44037 				if (_la==ANY) {
44038 					{
44039 					setState(6161);
44040 					match(ANY);
44041 					}
44042 				}
44043 
44044 				setState(6164);
44045 				match(EXTERNAL);
44046 				setState(6165);
44047 				match(SCRIPT);
44048 				}
44049 				break;
44050 			case 15:
44051 				enterOuterAlt(_localctx, 15);
44052 				{
44053 				setState(6166);
44054 				match(INSERT);
44055 				}
44056 				break;
44057 			case 16:
44058 				enterOuterAlt(_localctx, 16);
44059 				{
44060 				setState(6167);
44061 				match(KILL);
44062 				setState(6168);
44063 				match(DATABASE);
44064 				setState(6169);
44065 				match(CONNECTION);
44066 				}
44067 				break;
44068 			case 17:
44069 				enterOuterAlt(_localctx, 17);
44070 				{
44071 				setState(6170);
44072 				match(REFERENCES);
44073 				}
44074 				break;
44075 			case 18:
44076 				enterOuterAlt(_localctx, 18);
44077 				{
44078 				setState(6171);
44079 				match(SELECT);
44080 				}
44081 				break;
44082 			case 19:
44083 				enterOuterAlt(_localctx, 19);
44084 				{
44085 				setState(6172);
44086 				match(SHOWPLAN);
44087 				}
44088 				break;
44089 			case 20:
44090 				enterOuterAlt(_localctx, 20);
44091 				{
44092 				setState(6173);
44093 				match(SUBSCRIBE);
44094 				setState(6174);
44095 				match(QUERY);
44096 				setState(6175);
44097 				match(NOTIFICATIONS);
44098 				}
44099 				break;
44100 			case 21:
44101 				enterOuterAlt(_localctx, 21);
44102 				{
44103 				setState(6176);
44104 				match(TAKE);
44105 				setState(6177);
44106 				match(OWNERSHIP);
44107 				}
44108 				break;
44109 			case 22:
44110 				enterOuterAlt(_localctx, 22);
44111 				{
44112 				setState(6178);
44113 				match(UNMASK);
44114 				}
44115 				break;
44116 			case 23:
44117 				enterOuterAlt(_localctx, 23);
44118 				{
44119 				setState(6179);
44120 				match(UPDATE);
44121 				}
44122 				break;
44123 			case 24:
44124 				enterOuterAlt(_localctx, 24);
44125 				{
44126 				setState(6180);
44127 				match(VIEW);
44128 				setState(6181);
44129 				match(ANY);
44130 				setState(6182);
44131 				match(COLUMN);
44132 				setState(6183);
44133 				_la = _input.LA(1);
44134 				if ( !(_la==ENCRYPTION || _la==MASTER) ) {
44135 				_errHandler.recoverInline(this);
44136 				}
44137 				else {
44138 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
44139 					_errHandler.reportMatch(this);
44140 					consume();
44141 				}
44142 				setState(6184);
44143 				match(KEY);
44144 				setState(6185);
44145 				match(DEFINITION);
44146 				}
44147 				break;
44148 			case 25:
44149 				enterOuterAlt(_localctx, 25);
44150 				{
44151 				setState(6186);
44152 				match(CREATE);
44153 				setState(6187);
44154 				match(ANY);
44155 				setState(6191);
44156 				_errHandler.sync(this);
44157 				switch (_input.LA(1)) {
44158 				case DATABASE:
44159 					{
44160 					setState(6188);
44161 					match(DATABASE);
44162 					}
44163 					break;
44164 				case EXTERNAL:
44165 					{
44166 					setState(6189);
44167 					match(EXTERNAL);
44168 					setState(6190);
44169 					match(LIBRARY);
44170 					}
44171 					break;
44172 				default:
44173 					throw new NoViableAltException(this);
44174 				}
44175 				}
44176 				break;
44177 			case 26:
44178 				enterOuterAlt(_localctx, 26);
44179 				{
44180 				setState(6193);
44181 				match(VIEW);
44182 				setState(6194);
44183 				_la = _input.LA(1);
44184 				if ( !(_la==DATABASE || _la==SERVER) ) {
44185 				_errHandler.recoverInline(this);
44186 				}
44187 				else {
44188 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
44189 					_errHandler.reportMatch(this);
44190 					consume();
44191 				}
44192 				setState(6195);
44193 				match(STATE);
44194 				}
44195 				break;
44196 			case 27:
44197 				enterOuterAlt(_localctx, 27);
44198 				{
44199 				setState(6196);
44200 				match(VIEW);
44201 				setState(6198);
44202 				_errHandler.sync(this);
44203 				_la = _input.LA(1);
44204 				if (_la==ANY) {
44205 					{
44206 					setState(6197);
44207 					match(ANY);
44208 					}
44209 				}
44210 
44211 				setState(6200);
44212 				match(DEFINITION);
44213 				}
44214 				break;
44215 			case 28:
44216 				enterOuterAlt(_localctx, 28);
44217 				{
44218 				}
44219 				break;
44220 			}
44221 		}
44222 		catch (RecognitionException re) {
44223 			_localctx.exception = re;
44224 			_errHandler.reportError(this, re);
44225 			_errHandler.recover(this, re);
44226 		}
44227 		finally {
44228 			exitRule();
44229 		}
44230 		return _localctx;
44231 	}
44232 
44233 	public static class DatabasePrincipalPermissionContext extends ParserRuleContext {
44234 		public DatabaseUserPermissionContext databaseUserPermission() {
44235 			return getRuleContext(DatabaseUserPermissionContext.class,0);
44236 		}
44237 		public DatabaseRolePermissionContext databaseRolePermission() {
44238 			return getRuleContext(DatabaseRolePermissionContext.class,0);
44239 		}
44240 		public ApplicationRolePermissionContext applicationRolePermission() {
44241 			return getRuleContext(ApplicationRolePermissionContext.class,0);
44242 		}
44243 		public DatabasePrincipalPermissionContext(ParserRuleContext parent, int invokingState) {
44244 			super(parent, invokingState);
44245 		}
44246 		@Override public int getRuleIndex() { return RULE_databasePrincipalPermission; }
44247 		@Override
44248 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44249 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabasePrincipalPermission(this);
44250 			else return visitor.visitChildren(this);
44251 		}
44252 	}
44253 
44254 	public final DatabasePrincipalPermissionContext databasePrincipalPermission() throws RecognitionException {
44255 		DatabasePrincipalPermissionContext _localctx = new DatabasePrincipalPermissionContext(_ctx, getState());
44256 		enterRule(_localctx, 836, RULE_databasePrincipalPermission);
44257 		try {
44258 			setState(6207);
44259 			_errHandler.sync(this);
44260 			switch ( getInterpreter().adaptivePredict(_input,720,_ctx) ) {
44261 			case 1:
44262 				enterOuterAlt(_localctx, 1);
44263 				{
44264 				setState(6204);
44265 				databaseUserPermission();
44266 				}
44267 				break;
44268 			case 2:
44269 				enterOuterAlt(_localctx, 2);
44270 				{
44271 				setState(6205);
44272 				databaseRolePermission();
44273 				}
44274 				break;
44275 			case 3:
44276 				enterOuterAlt(_localctx, 3);
44277 				{
44278 				setState(6206);
44279 				applicationRolePermission();
44280 				}
44281 				break;
44282 			}
44283 		}
44284 		catch (RecognitionException re) {
44285 			_localctx.exception = re;
44286 			_errHandler.reportError(this, re);
44287 			_errHandler.recover(this, re);
44288 		}
44289 		finally {
44290 			exitRule();
44291 		}
44292 		return _localctx;
44293 	}
44294 
44295 	public static class DatabaseUserPermissionContext extends ParserRuleContext {
44296 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44297 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
44298 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44299 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44300 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44301 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44302 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
44303 		public DatabaseUserPermissionContext(ParserRuleContext parent, int invokingState) {
44304 			super(parent, invokingState);
44305 		}
44306 		@Override public int getRuleIndex() { return RULE_databaseUserPermission; }
44307 		@Override
44308 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44309 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseUserPermission(this);
44310 			else return visitor.visitChildren(this);
44311 		}
44312 	}
44313 
44314 	public final DatabaseUserPermissionContext databaseUserPermission() throws RecognitionException {
44315 		DatabaseUserPermissionContext _localctx = new DatabaseUserPermissionContext(_ctx, getState());
44316 		enterRule(_localctx, 838, RULE_databaseUserPermission);
44317 		try {
44318 			setState(6217);
44319 			_errHandler.sync(this);
44320 			switch ( getInterpreter().adaptivePredict(_input,721,_ctx) ) {
44321 			case 1:
44322 				enterOuterAlt(_localctx, 1);
44323 				{
44324 				setState(6209);
44325 				match(CONTROL);
44326 				}
44327 				break;
44328 			case 2:
44329 				enterOuterAlt(_localctx, 2);
44330 				{
44331 				setState(6210);
44332 				match(IMPERSONATE);
44333 				}
44334 				break;
44335 			case 3:
44336 				enterOuterAlt(_localctx, 3);
44337 				{
44338 				setState(6211);
44339 				match(ALTER);
44340 				}
44341 				break;
44342 			case 4:
44343 				enterOuterAlt(_localctx, 4);
44344 				{
44345 				setState(6212);
44346 				match(VIEW);
44347 				setState(6213);
44348 				match(DEFINITION);
44349 				}
44350 				break;
44351 			case 5:
44352 				enterOuterAlt(_localctx, 5);
44353 				{
44354 				setState(6214);
44355 				match(ALTER);
44356 				setState(6215);
44357 				match(ANY);
44358 				setState(6216);
44359 				match(USER);
44360 				}
44361 				break;
44362 			}
44363 		}
44364 		catch (RecognitionException re) {
44365 			_localctx.exception = re;
44366 			_errHandler.reportError(this, re);
44367 			_errHandler.recover(this, re);
44368 		}
44369 		finally {
44370 			exitRule();
44371 		}
44372 		return _localctx;
44373 	}
44374 
44375 	public static class DatabaseRolePermissionContext extends ParserRuleContext {
44376 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44377 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44378 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44379 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44380 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44381 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44382 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44383 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
44384 		public DatabaseRolePermissionContext(ParserRuleContext parent, int invokingState) {
44385 			super(parent, invokingState);
44386 		}
44387 		@Override public int getRuleIndex() { return RULE_databaseRolePermission; }
44388 		@Override
44389 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44390 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseRolePermission(this);
44391 			else return visitor.visitChildren(this);
44392 		}
44393 	}
44394 
44395 	public final DatabaseRolePermissionContext databaseRolePermission() throws RecognitionException {
44396 		DatabaseRolePermissionContext _localctx = new DatabaseRolePermissionContext(_ctx, getState());
44397 		enterRule(_localctx, 840, RULE_databaseRolePermission);
44398 		try {
44399 			setState(6228);
44400 			_errHandler.sync(this);
44401 			switch ( getInterpreter().adaptivePredict(_input,722,_ctx) ) {
44402 			case 1:
44403 				enterOuterAlt(_localctx, 1);
44404 				{
44405 				setState(6219);
44406 				match(CONTROL);
44407 				}
44408 				break;
44409 			case 2:
44410 				enterOuterAlt(_localctx, 2);
44411 				{
44412 				setState(6220);
44413 				match(TAKE);
44414 				setState(6221);
44415 				match(OWNERSHIP);
44416 				}
44417 				break;
44418 			case 3:
44419 				enterOuterAlt(_localctx, 3);
44420 				{
44421 				setState(6222);
44422 				match(ALTER);
44423 				}
44424 				break;
44425 			case 4:
44426 				enterOuterAlt(_localctx, 4);
44427 				{
44428 				setState(6223);
44429 				match(VIEW);
44430 				setState(6224);
44431 				match(DEFINITION);
44432 				}
44433 				break;
44434 			case 5:
44435 				enterOuterAlt(_localctx, 5);
44436 				{
44437 				setState(6225);
44438 				match(ALTER);
44439 				setState(6226);
44440 				match(ANY);
44441 				setState(6227);
44442 				match(ROLE);
44443 				}
44444 				break;
44445 			}
44446 		}
44447 		catch (RecognitionException re) {
44448 			_localctx.exception = re;
44449 			_errHandler.reportError(this, re);
44450 			_errHandler.recover(this, re);
44451 		}
44452 		finally {
44453 			exitRule();
44454 		}
44455 		return _localctx;
44456 	}
44457 
44458 	public static class ApplicationRolePermissionContext extends ParserRuleContext {
44459 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44460 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44461 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44462 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44463 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44464 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
44465 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
44466 		public ApplicationRolePermissionContext(ParserRuleContext parent, int invokingState) {
44467 			super(parent, invokingState);
44468 		}
44469 		@Override public int getRuleIndex() { return RULE_applicationRolePermission; }
44470 		@Override
44471 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44472 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitApplicationRolePermission(this);
44473 			else return visitor.visitChildren(this);
44474 		}
44475 	}
44476 
44477 	public final ApplicationRolePermissionContext applicationRolePermission() throws RecognitionException {
44478 		ApplicationRolePermissionContext _localctx = new ApplicationRolePermissionContext(_ctx, getState());
44479 		enterRule(_localctx, 842, RULE_applicationRolePermission);
44480 		try {
44481 			setState(6238);
44482 			_errHandler.sync(this);
44483 			switch ( getInterpreter().adaptivePredict(_input,723,_ctx) ) {
44484 			case 1:
44485 				enterOuterAlt(_localctx, 1);
44486 				{
44487 				setState(6230);
44488 				match(CONTROL);
44489 				}
44490 				break;
44491 			case 2:
44492 				enterOuterAlt(_localctx, 2);
44493 				{
44494 				setState(6231);
44495 				match(ALTER);
44496 				}
44497 				break;
44498 			case 3:
44499 				enterOuterAlt(_localctx, 3);
44500 				{
44501 				setState(6232);
44502 				match(VIEW);
44503 				setState(6233);
44504 				match(DEFINITION);
44505 				}
44506 				break;
44507 			case 4:
44508 				enterOuterAlt(_localctx, 4);
44509 				{
44510 				setState(6234);
44511 				match(ALTER);
44512 				setState(6235);
44513 				match(ANY);
44514 				setState(6236);
44515 				match(APPLICATION);
44516 				setState(6237);
44517 				match(ROLE);
44518 				}
44519 				break;
44520 			}
44521 		}
44522 		catch (RecognitionException re) {
44523 			_localctx.exception = re;
44524 			_errHandler.reportError(this, re);
44525 			_errHandler.recover(this, re);
44526 		}
44527 		finally {
44528 			exitRule();
44529 		}
44530 		return _localctx;
44531 	}
44532 
44533 	public static class DatabaseScopedCredentialPermissionContext extends ParserRuleContext {
44534 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44535 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44536 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44537 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44538 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44539 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44540 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44541 		public DatabaseScopedCredentialPermissionContext(ParserRuleContext parent, int invokingState) {
44542 			super(parent, invokingState);
44543 		}
44544 		@Override public int getRuleIndex() { return RULE_databaseScopedCredentialPermission; }
44545 		@Override
44546 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44547 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseScopedCredentialPermission(this);
44548 			else return visitor.visitChildren(this);
44549 		}
44550 	}
44551 
44552 	public final DatabaseScopedCredentialPermissionContext databaseScopedCredentialPermission() throws RecognitionException {
44553 		DatabaseScopedCredentialPermissionContext _localctx = new DatabaseScopedCredentialPermissionContext(_ctx, getState());
44554 		enterRule(_localctx, 844, RULE_databaseScopedCredentialPermission);
44555 		try {
44556 			setState(6247);
44557 			_errHandler.sync(this);
44558 			switch (_input.LA(1)) {
44559 			case CONTROL:
44560 				enterOuterAlt(_localctx, 1);
44561 				{
44562 				setState(6240);
44563 				match(CONTROL);
44564 				}
44565 				break;
44566 			case TAKE:
44567 				enterOuterAlt(_localctx, 2);
44568 				{
44569 				setState(6241);
44570 				match(TAKE);
44571 				setState(6242);
44572 				match(OWNERSHIP);
44573 				}
44574 				break;
44575 			case ALTER:
44576 				enterOuterAlt(_localctx, 3);
44577 				{
44578 				setState(6243);
44579 				match(ALTER);
44580 				}
44581 				break;
44582 			case REFERENCES:
44583 				enterOuterAlt(_localctx, 4);
44584 				{
44585 				setState(6244);
44586 				match(REFERENCES);
44587 				}
44588 				break;
44589 			case VIEW:
44590 				enterOuterAlt(_localctx, 5);
44591 				{
44592 				setState(6245);
44593 				match(VIEW);
44594 				setState(6246);
44595 				match(DEFINITION);
44596 				}
44597 				break;
44598 			default:
44599 				throw new NoViableAltException(this);
44600 			}
44601 		}
44602 		catch (RecognitionException re) {
44603 			_localctx.exception = re;
44604 			_errHandler.reportError(this, re);
44605 			_errHandler.recover(this, re);
44606 		}
44607 		finally {
44608 			exitRule();
44609 		}
44610 		return _localctx;
44611 	}
44612 
44613 	public static class SchemaPermissionContext extends ParserRuleContext {
44614 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44615 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44616 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
44617 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
44618 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
44619 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
44620 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
44621 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44622 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
44623 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44624 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44625 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
44626 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44627 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
44628 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
44629 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44630 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44631 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
44632 		public SchemaPermissionContext(ParserRuleContext parent, int invokingState) {
44633 			super(parent, invokingState);
44634 		}
44635 		@Override public int getRuleIndex() { return RULE_schemaPermission; }
44636 		@Override
44637 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44638 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaPermission(this);
44639 			else return visitor.visitChildren(this);
44640 		}
44641 	}
44642 
44643 	public final SchemaPermissionContext schemaPermission() throws RecognitionException {
44644 		SchemaPermissionContext _localctx = new SchemaPermissionContext(_ctx, getState());
44645 		enterRule(_localctx, 846, RULE_schemaPermission);
44646 		try {
44647 			setState(6269);
44648 			_errHandler.sync(this);
44649 			switch ( getInterpreter().adaptivePredict(_input,725,_ctx) ) {
44650 			case 1:
44651 				enterOuterAlt(_localctx, 1);
44652 				{
44653 				setState(6249);
44654 				match(ALTER);
44655 				}
44656 				break;
44657 			case 2:
44658 				enterOuterAlt(_localctx, 2);
44659 				{
44660 				setState(6250);
44661 				match(CONTROL);
44662 				}
44663 				break;
44664 			case 3:
44665 				enterOuterAlt(_localctx, 3);
44666 				{
44667 				setState(6251);
44668 				match(CREATE);
44669 				setState(6252);
44670 				match(SEQUENCE);
44671 				}
44672 				break;
44673 			case 4:
44674 				enterOuterAlt(_localctx, 4);
44675 				{
44676 				setState(6253);
44677 				match(DELETE);
44678 				}
44679 				break;
44680 			case 5:
44681 				enterOuterAlt(_localctx, 5);
44682 				{
44683 				setState(6254);
44684 				match(EXECUTE);
44685 				}
44686 				break;
44687 			case 6:
44688 				enterOuterAlt(_localctx, 6);
44689 				{
44690 				setState(6255);
44691 				match(INSERT);
44692 				}
44693 				break;
44694 			case 7:
44695 				enterOuterAlt(_localctx, 7);
44696 				{
44697 				setState(6256);
44698 				match(REFERENCES);
44699 				}
44700 				break;
44701 			case 8:
44702 				enterOuterAlt(_localctx, 8);
44703 				{
44704 				setState(6257);
44705 				match(SELECT);
44706 				}
44707 				break;
44708 			case 9:
44709 				enterOuterAlt(_localctx, 9);
44710 				{
44711 				setState(6258);
44712 				match(TAKE);
44713 				setState(6259);
44714 				match(OWNERSHIP);
44715 				}
44716 				break;
44717 			case 10:
44718 				enterOuterAlt(_localctx, 10);
44719 				{
44720 				setState(6260);
44721 				match(UPDATE);
44722 				}
44723 				break;
44724 			case 11:
44725 				enterOuterAlt(_localctx, 11);
44726 				{
44727 				setState(6261);
44728 				match(VIEW);
44729 				setState(6262);
44730 				match(CHANGE);
44731 				setState(6263);
44732 				match(TRACKING);
44733 				}
44734 				break;
44735 			case 12:
44736 				enterOuterAlt(_localctx, 12);
44737 				{
44738 				setState(6264);
44739 				match(VIEW);
44740 				setState(6265);
44741 				match(DEFINITION);
44742 				}
44743 				break;
44744 			case 13:
44745 				enterOuterAlt(_localctx, 13);
44746 				{
44747 				setState(6266);
44748 				match(ALTER);
44749 				setState(6267);
44750 				match(ANY);
44751 				setState(6268);
44752 				match(SCHEMA);
44753 				}
44754 				break;
44755 			}
44756 		}
44757 		catch (RecognitionException re) {
44758 			_localctx.exception = re;
44759 			_errHandler.reportError(this, re);
44760 			_errHandler.recover(this, re);
44761 		}
44762 		finally {
44763 			exitRule();
44764 		}
44765 		return _localctx;
44766 	}
44767 
44768 	public static class SearchPropertyListPermissionContext extends ParserRuleContext {
44769 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44770 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44771 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44772 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44773 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44774 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44775 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44776 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44777 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
44778 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
44779 		public SearchPropertyListPermissionContext(ParserRuleContext parent, int invokingState) {
44780 			super(parent, invokingState);
44781 		}
44782 		@Override public int getRuleIndex() { return RULE_searchPropertyListPermission; }
44783 		@Override
44784 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44785 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSearchPropertyListPermission(this);
44786 			else return visitor.visitChildren(this);
44787 		}
44788 	}
44789 
44790 	public final SearchPropertyListPermissionContext searchPropertyListPermission() throws RecognitionException {
44791 		SearchPropertyListPermissionContext _localctx = new SearchPropertyListPermissionContext(_ctx, getState());
44792 		enterRule(_localctx, 848, RULE_searchPropertyListPermission);
44793 		try {
44794 			setState(6282);
44795 			_errHandler.sync(this);
44796 			switch ( getInterpreter().adaptivePredict(_input,726,_ctx) ) {
44797 			case 1:
44798 				enterOuterAlt(_localctx, 1);
44799 				{
44800 				setState(6271);
44801 				match(ALTER);
44802 				}
44803 				break;
44804 			case 2:
44805 				enterOuterAlt(_localctx, 2);
44806 				{
44807 				setState(6272);
44808 				match(CONTROL);
44809 				}
44810 				break;
44811 			case 3:
44812 				enterOuterAlt(_localctx, 3);
44813 				{
44814 				setState(6273);
44815 				match(REFERENCES);
44816 				}
44817 				break;
44818 			case 4:
44819 				enterOuterAlt(_localctx, 4);
44820 				{
44821 				setState(6274);
44822 				match(TAKE);
44823 				setState(6275);
44824 				match(OWNERSHIP);
44825 				}
44826 				break;
44827 			case 5:
44828 				enterOuterAlt(_localctx, 5);
44829 				{
44830 				setState(6276);
44831 				match(VIEW);
44832 				setState(6277);
44833 				match(DEFINITION);
44834 				}
44835 				break;
44836 			case 6:
44837 				enterOuterAlt(_localctx, 6);
44838 				{
44839 				setState(6278);
44840 				match(ALTER);
44841 				setState(6279);
44842 				match(ANY);
44843 				setState(6280);
44844 				match(FULLTEXT);
44845 				setState(6281);
44846 				match(CATALOG);
44847 				}
44848 				break;
44849 			}
44850 		}
44851 		catch (RecognitionException re) {
44852 			_localctx.exception = re;
44853 			_errHandler.reportError(this, re);
44854 			_errHandler.recover(this, re);
44855 		}
44856 		finally {
44857 			exitRule();
44858 		}
44859 		return _localctx;
44860 	}
44861 
44862 	public static class ServiceBrokerPermissionContext extends ParserRuleContext {
44863 		public ServiceBrokerContractsPermissionContext serviceBrokerContractsPermission() {
44864 			return getRuleContext(ServiceBrokerContractsPermissionContext.class,0);
44865 		}
44866 		public ServiceBrokerMessageTypesPermissionContext serviceBrokerMessageTypesPermission() {
44867 			return getRuleContext(ServiceBrokerMessageTypesPermissionContext.class,0);
44868 		}
44869 		public ServiceBrokerRemoteServiceBindingsPermissionContext serviceBrokerRemoteServiceBindingsPermission() {
44870 			return getRuleContext(ServiceBrokerRemoteServiceBindingsPermissionContext.class,0);
44871 		}
44872 		public ServiceBrokerRoutesPermissionContext serviceBrokerRoutesPermission() {
44873 			return getRuleContext(ServiceBrokerRoutesPermissionContext.class,0);
44874 		}
44875 		public ServiceBrokerServicesPermissionContext serviceBrokerServicesPermission() {
44876 			return getRuleContext(ServiceBrokerServicesPermissionContext.class,0);
44877 		}
44878 		public ServiceBrokerPermissionContext(ParserRuleContext parent, int invokingState) {
44879 			super(parent, invokingState);
44880 		}
44881 		@Override public int getRuleIndex() { return RULE_serviceBrokerPermission; }
44882 		@Override
44883 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44884 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerPermission(this);
44885 			else return visitor.visitChildren(this);
44886 		}
44887 	}
44888 
44889 	public final ServiceBrokerPermissionContext serviceBrokerPermission() throws RecognitionException {
44890 		ServiceBrokerPermissionContext _localctx = new ServiceBrokerPermissionContext(_ctx, getState());
44891 		enterRule(_localctx, 850, RULE_serviceBrokerPermission);
44892 		try {
44893 			setState(6289);
44894 			_errHandler.sync(this);
44895 			switch ( getInterpreter().adaptivePredict(_input,727,_ctx) ) {
44896 			case 1:
44897 				enterOuterAlt(_localctx, 1);
44898 				{
44899 				setState(6284);
44900 				serviceBrokerContractsPermission();
44901 				}
44902 				break;
44903 			case 2:
44904 				enterOuterAlt(_localctx, 2);
44905 				{
44906 				setState(6285);
44907 				serviceBrokerMessageTypesPermission();
44908 				}
44909 				break;
44910 			case 3:
44911 				enterOuterAlt(_localctx, 3);
44912 				{
44913 				setState(6286);
44914 				serviceBrokerRemoteServiceBindingsPermission();
44915 				}
44916 				break;
44917 			case 4:
44918 				enterOuterAlt(_localctx, 4);
44919 				{
44920 				setState(6287);
44921 				serviceBrokerRoutesPermission();
44922 				}
44923 				break;
44924 			case 5:
44925 				enterOuterAlt(_localctx, 5);
44926 				{
44927 				setState(6288);
44928 				serviceBrokerServicesPermission();
44929 				}
44930 				break;
44931 			}
44932 		}
44933 		catch (RecognitionException re) {
44934 			_localctx.exception = re;
44935 			_errHandler.reportError(this, re);
44936 			_errHandler.recover(this, re);
44937 		}
44938 		finally {
44939 			exitRule();
44940 		}
44941 		return _localctx;
44942 	}
44943 
44944 	public static class ServiceBrokerContractsPermissionContext extends ParserRuleContext {
44945 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44946 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44947 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44948 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44949 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44950 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44951 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44952 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44953 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
44954 		public ServiceBrokerContractsPermissionContext(ParserRuleContext parent, int invokingState) {
44955 			super(parent, invokingState);
44956 		}
44957 		@Override public int getRuleIndex() { return RULE_serviceBrokerContractsPermission; }
44958 		@Override
44959 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44960 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerContractsPermission(this);
44961 			else return visitor.visitChildren(this);
44962 		}
44963 	}
44964 
44965 	public final ServiceBrokerContractsPermissionContext serviceBrokerContractsPermission() throws RecognitionException {
44966 		ServiceBrokerContractsPermissionContext _localctx = new ServiceBrokerContractsPermissionContext(_ctx, getState());
44967 		enterRule(_localctx, 852, RULE_serviceBrokerContractsPermission);
44968 		try {
44969 			setState(6301);
44970 			_errHandler.sync(this);
44971 			switch ( getInterpreter().adaptivePredict(_input,728,_ctx) ) {
44972 			case 1:
44973 				enterOuterAlt(_localctx, 1);
44974 				{
44975 				setState(6291);
44976 				match(CONTROL);
44977 				}
44978 				break;
44979 			case 2:
44980 				enterOuterAlt(_localctx, 2);
44981 				{
44982 				setState(6292);
44983 				match(TAKE);
44984 				setState(6293);
44985 				match(OWNERSHIP);
44986 				}
44987 				break;
44988 			case 3:
44989 				enterOuterAlt(_localctx, 3);
44990 				{
44991 				setState(6294);
44992 				match(ALTER);
44993 				}
44994 				break;
44995 			case 4:
44996 				enterOuterAlt(_localctx, 4);
44997 				{
44998 				setState(6295);
44999 				match(REFERENCES);
45000 				}
45001 				break;
45002 			case 5:
45003 				enterOuterAlt(_localctx, 5);
45004 				{
45005 				setState(6296);
45006 				match(VIEW);
45007 				setState(6297);
45008 				match(DEFINITION);
45009 				}
45010 				break;
45011 			case 6:
45012 				enterOuterAlt(_localctx, 6);
45013 				{
45014 				setState(6298);
45015 				match(ALTER);
45016 				setState(6299);
45017 				match(ANY);
45018 				setState(6300);
45019 				match(CONTRACT);
45020 				}
45021 				break;
45022 			}
45023 		}
45024 		catch (RecognitionException re) {
45025 			_localctx.exception = re;
45026 			_errHandler.reportError(this, re);
45027 			_errHandler.recover(this, re);
45028 		}
45029 		finally {
45030 			exitRule();
45031 		}
45032 		return _localctx;
45033 	}
45034 
45035 	public static class ServiceBrokerMessageTypesPermissionContext extends ParserRuleContext {
45036 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45037 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45038 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45039 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45040 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45041 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45042 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45043 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45044 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
45045 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
45046 		public ServiceBrokerMessageTypesPermissionContext(ParserRuleContext parent, int invokingState) {
45047 			super(parent, invokingState);
45048 		}
45049 		@Override public int getRuleIndex() { return RULE_serviceBrokerMessageTypesPermission; }
45050 		@Override
45051 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45052 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerMessageTypesPermission(this);
45053 			else return visitor.visitChildren(this);
45054 		}
45055 	}
45056 
45057 	public final ServiceBrokerMessageTypesPermissionContext serviceBrokerMessageTypesPermission() throws RecognitionException {
45058 		ServiceBrokerMessageTypesPermissionContext _localctx = new ServiceBrokerMessageTypesPermissionContext(_ctx, getState());
45059 		enterRule(_localctx, 854, RULE_serviceBrokerMessageTypesPermission);
45060 		try {
45061 			setState(6314);
45062 			_errHandler.sync(this);
45063 			switch ( getInterpreter().adaptivePredict(_input,729,_ctx) ) {
45064 			case 1:
45065 				enterOuterAlt(_localctx, 1);
45066 				{
45067 				setState(6303);
45068 				match(CONTROL);
45069 				}
45070 				break;
45071 			case 2:
45072 				enterOuterAlt(_localctx, 2);
45073 				{
45074 				setState(6304);
45075 				match(TAKE);
45076 				setState(6305);
45077 				match(OWNERSHIP);
45078 				}
45079 				break;
45080 			case 3:
45081 				enterOuterAlt(_localctx, 3);
45082 				{
45083 				setState(6306);
45084 				match(ALTER);
45085 				}
45086 				break;
45087 			case 4:
45088 				enterOuterAlt(_localctx, 4);
45089 				{
45090 				setState(6307);
45091 				match(REFERENCES);
45092 				}
45093 				break;
45094 			case 5:
45095 				enterOuterAlt(_localctx, 5);
45096 				{
45097 				setState(6308);
45098 				match(VIEW);
45099 				setState(6309);
45100 				match(DEFINITION);
45101 				}
45102 				break;
45103 			case 6:
45104 				enterOuterAlt(_localctx, 6);
45105 				{
45106 				setState(6310);
45107 				match(ALTER);
45108 				setState(6311);
45109 				match(ANY);
45110 				setState(6312);
45111 				match(MESSAGE);
45112 				setState(6313);
45113 				match(TYPE);
45114 				}
45115 				break;
45116 			}
45117 		}
45118 		catch (RecognitionException re) {
45119 			_localctx.exception = re;
45120 			_errHandler.reportError(this, re);
45121 			_errHandler.recover(this, re);
45122 		}
45123 		finally {
45124 			exitRule();
45125 		}
45126 		return _localctx;
45127 	}
45128 
45129 	public static class ServiceBrokerRemoteServiceBindingsPermissionContext extends ParserRuleContext {
45130 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45131 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45132 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45133 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45134 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45135 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45136 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45137 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
45138 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
45139 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
45140 		public ServiceBrokerRemoteServiceBindingsPermissionContext(ParserRuleContext parent, int invokingState) {
45141 			super(parent, invokingState);
45142 		}
45143 		@Override public int getRuleIndex() { return RULE_serviceBrokerRemoteServiceBindingsPermission; }
45144 		@Override
45145 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45146 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerRemoteServiceBindingsPermission(this);
45147 			else return visitor.visitChildren(this);
45148 		}
45149 	}
45150 
45151 	public final ServiceBrokerRemoteServiceBindingsPermissionContext serviceBrokerRemoteServiceBindingsPermission() throws RecognitionException {
45152 		ServiceBrokerRemoteServiceBindingsPermissionContext _localctx = new ServiceBrokerRemoteServiceBindingsPermissionContext(_ctx, getState());
45153 		enterRule(_localctx, 856, RULE_serviceBrokerRemoteServiceBindingsPermission);
45154 		try {
45155 			setState(6327);
45156 			_errHandler.sync(this);
45157 			switch ( getInterpreter().adaptivePredict(_input,730,_ctx) ) {
45158 			case 1:
45159 				enterOuterAlt(_localctx, 1);
45160 				{
45161 				setState(6316);
45162 				match(CONTROL);
45163 				}
45164 				break;
45165 			case 2:
45166 				enterOuterAlt(_localctx, 2);
45167 				{
45168 				setState(6317);
45169 				match(TAKE);
45170 				setState(6318);
45171 				match(OWNERSHIP);
45172 				}
45173 				break;
45174 			case 3:
45175 				enterOuterAlt(_localctx, 3);
45176 				{
45177 				setState(6319);
45178 				match(ALTER);
45179 				}
45180 				break;
45181 			case 4:
45182 				enterOuterAlt(_localctx, 4);
45183 				{
45184 				setState(6320);
45185 				match(VIEW);
45186 				setState(6321);
45187 				match(DEFINITION);
45188 				}
45189 				break;
45190 			case 5:
45191 				enterOuterAlt(_localctx, 5);
45192 				{
45193 				setState(6322);
45194 				match(ALTER);
45195 				setState(6323);
45196 				match(ANY);
45197 				setState(6324);
45198 				match(REMOTE);
45199 				setState(6325);
45200 				match(SERVICE);
45201 				setState(6326);
45202 				match(BINDING);
45203 				}
45204 				break;
45205 			}
45206 		}
45207 		catch (RecognitionException re) {
45208 			_localctx.exception = re;
45209 			_errHandler.reportError(this, re);
45210 			_errHandler.recover(this, re);
45211 		}
45212 		finally {
45213 			exitRule();
45214 		}
45215 		return _localctx;
45216 	}
45217 
45218 	public static class ServiceBrokerRoutesPermissionContext extends ParserRuleContext {
45219 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45220 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45221 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45222 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45223 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45224 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45225 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45226 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
45227 		public ServiceBrokerRoutesPermissionContext(ParserRuleContext parent, int invokingState) {
45228 			super(parent, invokingState);
45229 		}
45230 		@Override public int getRuleIndex() { return RULE_serviceBrokerRoutesPermission; }
45231 		@Override
45232 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45233 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerRoutesPermission(this);
45234 			else return visitor.visitChildren(this);
45235 		}
45236 	}
45237 
45238 	public final ServiceBrokerRoutesPermissionContext serviceBrokerRoutesPermission() throws RecognitionException {
45239 		ServiceBrokerRoutesPermissionContext _localctx = new ServiceBrokerRoutesPermissionContext(_ctx, getState());
45240 		enterRule(_localctx, 858, RULE_serviceBrokerRoutesPermission);
45241 		try {
45242 			setState(6338);
45243 			_errHandler.sync(this);
45244 			switch ( getInterpreter().adaptivePredict(_input,731,_ctx) ) {
45245 			case 1:
45246 				enterOuterAlt(_localctx, 1);
45247 				{
45248 				setState(6329);
45249 				match(CONTROL);
45250 				}
45251 				break;
45252 			case 2:
45253 				enterOuterAlt(_localctx, 2);
45254 				{
45255 				setState(6330);
45256 				match(TAKE);
45257 				setState(6331);
45258 				match(OWNERSHIP);
45259 				}
45260 				break;
45261 			case 3:
45262 				enterOuterAlt(_localctx, 3);
45263 				{
45264 				setState(6332);
45265 				match(ALTER);
45266 				}
45267 				break;
45268 			case 4:
45269 				enterOuterAlt(_localctx, 4);
45270 				{
45271 				setState(6333);
45272 				match(VIEW);
45273 				setState(6334);
45274 				match(DEFINITION);
45275 				}
45276 				break;
45277 			case 5:
45278 				enterOuterAlt(_localctx, 5);
45279 				{
45280 				setState(6335);
45281 				match(ALTER);
45282 				setState(6336);
45283 				match(ANY);
45284 				setState(6337);
45285 				match(ROUTE);
45286 				}
45287 				break;
45288 			}
45289 		}
45290 		catch (RecognitionException re) {
45291 			_localctx.exception = re;
45292 			_errHandler.reportError(this, re);
45293 			_errHandler.recover(this, re);
45294 		}
45295 		finally {
45296 			exitRule();
45297 		}
45298 		return _localctx;
45299 	}
45300 
45301 	public static class ServiceBrokerServicesPermissionContext extends ParserRuleContext {
45302 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45303 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45304 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45305 		public TerminalNode SEND() { return getToken(SQLServerStatementParser.SEND, 0); }
45306 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45307 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45308 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45309 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45310 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
45311 		public ServiceBrokerServicesPermissionContext(ParserRuleContext parent, int invokingState) {
45312 			super(parent, invokingState);
45313 		}
45314 		@Override public int getRuleIndex() { return RULE_serviceBrokerServicesPermission; }
45315 		@Override
45316 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45317 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerServicesPermission(this);
45318 			else return visitor.visitChildren(this);
45319 		}
45320 	}
45321 
45322 	public final ServiceBrokerServicesPermissionContext serviceBrokerServicesPermission() throws RecognitionException {
45323 		ServiceBrokerServicesPermissionContext _localctx = new ServiceBrokerServicesPermissionContext(_ctx, getState());
45324 		enterRule(_localctx, 860, RULE_serviceBrokerServicesPermission);
45325 		try {
45326 			setState(6350);
45327 			_errHandler.sync(this);
45328 			switch ( getInterpreter().adaptivePredict(_input,732,_ctx) ) {
45329 			case 1:
45330 				enterOuterAlt(_localctx, 1);
45331 				{
45332 				setState(6340);
45333 				match(CONTROL);
45334 				}
45335 				break;
45336 			case 2:
45337 				enterOuterAlt(_localctx, 2);
45338 				{
45339 				setState(6341);
45340 				match(TAKE);
45341 				setState(6342);
45342 				match(OWNERSHIP);
45343 				}
45344 				break;
45345 			case 3:
45346 				enterOuterAlt(_localctx, 3);
45347 				{
45348 				setState(6343);
45349 				match(SEND);
45350 				}
45351 				break;
45352 			case 4:
45353 				enterOuterAlt(_localctx, 4);
45354 				{
45355 				setState(6344);
45356 				match(ALTER);
45357 				}
45358 				break;
45359 			case 5:
45360 				enterOuterAlt(_localctx, 5);
45361 				{
45362 				setState(6345);
45363 				match(VIEW);
45364 				setState(6346);
45365 				match(DEFINITION);
45366 				}
45367 				break;
45368 			case 6:
45369 				enterOuterAlt(_localctx, 6);
45370 				{
45371 				setState(6347);
45372 				match(ALTER);
45373 				setState(6348);
45374 				match(ANY);
45375 				setState(6349);
45376 				match(SERVICE);
45377 				}
45378 				break;
45379 			}
45380 		}
45381 		catch (RecognitionException re) {
45382 			_localctx.exception = re;
45383 			_errHandler.reportError(this, re);
45384 			_errHandler.recover(this, re);
45385 		}
45386 		finally {
45387 			exitRule();
45388 		}
45389 		return _localctx;
45390 	}
45391 
45392 	public static class EndpointPermissionContext extends ParserRuleContext {
45393 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45394 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
45395 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45396 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
45397 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45398 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45399 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45400 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45401 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45402 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
45403 		public EndpointPermissionContext(ParserRuleContext parent, int invokingState) {
45404 			super(parent, invokingState);
45405 		}
45406 		@Override public int getRuleIndex() { return RULE_endpointPermission; }
45407 		@Override
45408 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45409 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEndpointPermission(this);
45410 			else return visitor.visitChildren(this);
45411 		}
45412 	}
45413 
45414 	public final EndpointPermissionContext endpointPermission() throws RecognitionException {
45415 		EndpointPermissionContext _localctx = new EndpointPermissionContext(_ctx, getState());
45416 		enterRule(_localctx, 862, RULE_endpointPermission);
45417 		int _la;
45418 		try {
45419 			setState(6368);
45420 			_errHandler.sync(this);
45421 			switch ( getInterpreter().adaptivePredict(_input,735,_ctx) ) {
45422 			case 1:
45423 				enterOuterAlt(_localctx, 1);
45424 				{
45425 				setState(6352);
45426 				match(ALTER);
45427 				}
45428 				break;
45429 			case 2:
45430 				enterOuterAlt(_localctx, 2);
45431 				{
45432 				setState(6353);
45433 				match(CONNECT);
45434 				}
45435 				break;
45436 			case 3:
45437 				enterOuterAlt(_localctx, 3);
45438 				{
45439 				setState(6354);
45440 				match(CONTROL);
45441 				setState(6356);
45442 				_errHandler.sync(this);
45443 				_la = _input.LA(1);
45444 				if (_la==SERVER) {
45445 					{
45446 					setState(6355);
45447 					match(SERVER);
45448 					}
45449 				}
45450 
45451 				}
45452 				break;
45453 			case 4:
45454 				enterOuterAlt(_localctx, 4);
45455 				{
45456 				setState(6358);
45457 				match(TAKE);
45458 				setState(6359);
45459 				match(OWNERSHIP);
45460 				}
45461 				break;
45462 			case 5:
45463 				enterOuterAlt(_localctx, 5);
45464 				{
45465 				setState(6360);
45466 				match(VIEW);
45467 				setState(6362);
45468 				_errHandler.sync(this);
45469 				_la = _input.LA(1);
45470 				if (_la==ANY) {
45471 					{
45472 					setState(6361);
45473 					match(ANY);
45474 					}
45475 				}
45476 
45477 				setState(6364);
45478 				match(DEFINITION);
45479 				}
45480 				break;
45481 			case 6:
45482 				enterOuterAlt(_localctx, 6);
45483 				{
45484 				setState(6365);
45485 				match(ALTER);
45486 				setState(6366);
45487 				match(ANY);
45488 				setState(6367);
45489 				match(ENDPOINT);
45490 				}
45491 				break;
45492 			}
45493 		}
45494 		catch (RecognitionException re) {
45495 			_localctx.exception = re;
45496 			_errHandler.reportError(this, re);
45497 			_errHandler.recover(this, re);
45498 		}
45499 		finally {
45500 			exitRule();
45501 		}
45502 		return _localctx;
45503 	}
45504 
45505 	public static class CertificatePermissionContext extends ParserRuleContext {
45506 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45507 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45508 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45509 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45510 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45511 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45512 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45513 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45514 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
45515 		public CertificatePermissionContext(ParserRuleContext parent, int invokingState) {
45516 			super(parent, invokingState);
45517 		}
45518 		@Override public int getRuleIndex() { return RULE_certificatePermission; }
45519 		@Override
45520 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45521 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCertificatePermission(this);
45522 			else return visitor.visitChildren(this);
45523 		}
45524 	}
45525 
45526 	public final CertificatePermissionContext certificatePermission() throws RecognitionException {
45527 		CertificatePermissionContext _localctx = new CertificatePermissionContext(_ctx, getState());
45528 		enterRule(_localctx, 864, RULE_certificatePermission);
45529 		try {
45530 			setState(6380);
45531 			_errHandler.sync(this);
45532 			switch ( getInterpreter().adaptivePredict(_input,736,_ctx) ) {
45533 			case 1:
45534 				enterOuterAlt(_localctx, 1);
45535 				{
45536 				setState(6370);
45537 				match(CONTROL);
45538 				}
45539 				break;
45540 			case 2:
45541 				enterOuterAlt(_localctx, 2);
45542 				{
45543 				setState(6371);
45544 				match(TAKE);
45545 				setState(6372);
45546 				match(OWNERSHIP);
45547 				}
45548 				break;
45549 			case 3:
45550 				enterOuterAlt(_localctx, 3);
45551 				{
45552 				setState(6373);
45553 				match(ALTER);
45554 				}
45555 				break;
45556 			case 4:
45557 				enterOuterAlt(_localctx, 4);
45558 				{
45559 				setState(6374);
45560 				match(REFERENCES);
45561 				}
45562 				break;
45563 			case 5:
45564 				enterOuterAlt(_localctx, 5);
45565 				{
45566 				setState(6375);
45567 				match(VIEW);
45568 				setState(6376);
45569 				match(DEFINITION);
45570 				}
45571 				break;
45572 			case 6:
45573 				enterOuterAlt(_localctx, 6);
45574 				{
45575 				setState(6377);
45576 				match(ALTER);
45577 				setState(6378);
45578 				match(ANY);
45579 				setState(6379);
45580 				match(CERTIFICATE);
45581 				}
45582 				break;
45583 			}
45584 		}
45585 		catch (RecognitionException re) {
45586 			_localctx.exception = re;
45587 			_errHandler.reportError(this, re);
45588 			_errHandler.recover(this, re);
45589 		}
45590 		finally {
45591 			exitRule();
45592 		}
45593 		return _localctx;
45594 	}
45595 
45596 	public static class SymmetricKeyPermissionContext extends ParserRuleContext {
45597 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45598 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45599 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45600 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45601 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45602 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45603 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45604 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45605 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
45606 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
45607 		public SymmetricKeyPermissionContext(ParserRuleContext parent, int invokingState) {
45608 			super(parent, invokingState);
45609 		}
45610 		@Override public int getRuleIndex() { return RULE_symmetricKeyPermission; }
45611 		@Override
45612 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45613 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSymmetricKeyPermission(this);
45614 			else return visitor.visitChildren(this);
45615 		}
45616 	}
45617 
45618 	public final SymmetricKeyPermissionContext symmetricKeyPermission() throws RecognitionException {
45619 		SymmetricKeyPermissionContext _localctx = new SymmetricKeyPermissionContext(_ctx, getState());
45620 		enterRule(_localctx, 866, RULE_symmetricKeyPermission);
45621 		try {
45622 			setState(6393);
45623 			_errHandler.sync(this);
45624 			switch ( getInterpreter().adaptivePredict(_input,737,_ctx) ) {
45625 			case 1:
45626 				enterOuterAlt(_localctx, 1);
45627 				{
45628 				setState(6382);
45629 				match(ALTER);
45630 				}
45631 				break;
45632 			case 2:
45633 				enterOuterAlt(_localctx, 2);
45634 				{
45635 				setState(6383);
45636 				match(CONTROL);
45637 				}
45638 				break;
45639 			case 3:
45640 				enterOuterAlt(_localctx, 3);
45641 				{
45642 				setState(6384);
45643 				match(REFERENCES);
45644 				}
45645 				break;
45646 			case 4:
45647 				enterOuterAlt(_localctx, 4);
45648 				{
45649 				setState(6385);
45650 				match(TAKE);
45651 				setState(6386);
45652 				match(OWNERSHIP);
45653 				}
45654 				break;
45655 			case 5:
45656 				enterOuterAlt(_localctx, 5);
45657 				{
45658 				setState(6387);
45659 				match(VIEW);
45660 				setState(6388);
45661 				match(DEFINITION);
45662 				}
45663 				break;
45664 			case 6:
45665 				enterOuterAlt(_localctx, 6);
45666 				{
45667 				setState(6389);
45668 				match(ALTER);
45669 				setState(6390);
45670 				match(ANY);
45671 				setState(6391);
45672 				match(SYMMETRIC);
45673 				setState(6392);
45674 				match(KEY);
45675 				}
45676 				break;
45677 			}
45678 		}
45679 		catch (RecognitionException re) {
45680 			_localctx.exception = re;
45681 			_errHandler.reportError(this, re);
45682 			_errHandler.recover(this, re);
45683 		}
45684 		finally {
45685 			exitRule();
45686 		}
45687 		return _localctx;
45688 	}
45689 
45690 	public static class AsymmetricKeyPermissionContext extends ParserRuleContext {
45691 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45692 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45693 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45694 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45695 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45696 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45697 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45698 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45699 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
45700 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
45701 		public AsymmetricKeyPermissionContext(ParserRuleContext parent, int invokingState) {
45702 			super(parent, invokingState);
45703 		}
45704 		@Override public int getRuleIndex() { return RULE_asymmetricKeyPermission; }
45705 		@Override
45706 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45707 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAsymmetricKeyPermission(this);
45708 			else return visitor.visitChildren(this);
45709 		}
45710 	}
45711 
45712 	public final AsymmetricKeyPermissionContext asymmetricKeyPermission() throws RecognitionException {
45713 		AsymmetricKeyPermissionContext _localctx = new AsymmetricKeyPermissionContext(_ctx, getState());
45714 		enterRule(_localctx, 868, RULE_asymmetricKeyPermission);
45715 		try {
45716 			setState(6406);
45717 			_errHandler.sync(this);
45718 			switch ( getInterpreter().adaptivePredict(_input,738,_ctx) ) {
45719 			case 1:
45720 				enterOuterAlt(_localctx, 1);
45721 				{
45722 				setState(6395);
45723 				match(CONTROL);
45724 				}
45725 				break;
45726 			case 2:
45727 				enterOuterAlt(_localctx, 2);
45728 				{
45729 				setState(6396);
45730 				match(TAKE);
45731 				setState(6397);
45732 				match(OWNERSHIP);
45733 				}
45734 				break;
45735 			case 3:
45736 				enterOuterAlt(_localctx, 3);
45737 				{
45738 				setState(6398);
45739 				match(ALTER);
45740 				}
45741 				break;
45742 			case 4:
45743 				enterOuterAlt(_localctx, 4);
45744 				{
45745 				setState(6399);
45746 				match(REFERENCES);
45747 				}
45748 				break;
45749 			case 5:
45750 				enterOuterAlt(_localctx, 5);
45751 				{
45752 				setState(6400);
45753 				match(VIEW);
45754 				setState(6401);
45755 				match(DEFINITION);
45756 				}
45757 				break;
45758 			case 6:
45759 				enterOuterAlt(_localctx, 6);
45760 				{
45761 				setState(6402);
45762 				match(ALTER);
45763 				setState(6403);
45764 				match(ANY);
45765 				setState(6404);
45766 				match(ASYMMETRIC);
45767 				setState(6405);
45768 				match(KEY);
45769 				}
45770 				break;
45771 			}
45772 		}
45773 		catch (RecognitionException re) {
45774 			_localctx.exception = re;
45775 			_errHandler.reportError(this, re);
45776 			_errHandler.recover(this, re);
45777 		}
45778 		finally {
45779 			exitRule();
45780 		}
45781 		return _localctx;
45782 	}
45783 
45784 	public static class AssemblyPermissionContext extends ParserRuleContext {
45785 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45786 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45787 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45788 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45789 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45790 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45791 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45792 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45793 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
45794 		public AssemblyPermissionContext(ParserRuleContext parent, int invokingState) {
45795 			super(parent, invokingState);
45796 		}
45797 		@Override public int getRuleIndex() { return RULE_assemblyPermission; }
45798 		@Override
45799 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45800 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssemblyPermission(this);
45801 			else return visitor.visitChildren(this);
45802 		}
45803 	}
45804 
45805 	public final AssemblyPermissionContext assemblyPermission() throws RecognitionException {
45806 		AssemblyPermissionContext _localctx = new AssemblyPermissionContext(_ctx, getState());
45807 		enterRule(_localctx, 870, RULE_assemblyPermission);
45808 		try {
45809 			setState(6418);
45810 			_errHandler.sync(this);
45811 			switch ( getInterpreter().adaptivePredict(_input,739,_ctx) ) {
45812 			case 1:
45813 				enterOuterAlt(_localctx, 1);
45814 				{
45815 				setState(6408);
45816 				match(CONTROL);
45817 				}
45818 				break;
45819 			case 2:
45820 				enterOuterAlt(_localctx, 2);
45821 				{
45822 				setState(6409);
45823 				match(TAKE);
45824 				setState(6410);
45825 				match(OWNERSHIP);
45826 				}
45827 				break;
45828 			case 3:
45829 				enterOuterAlt(_localctx, 3);
45830 				{
45831 				setState(6411);
45832 				match(ALTER);
45833 				}
45834 				break;
45835 			case 4:
45836 				enterOuterAlt(_localctx, 4);
45837 				{
45838 				setState(6412);
45839 				match(REFERENCES);
45840 				}
45841 				break;
45842 			case 5:
45843 				enterOuterAlt(_localctx, 5);
45844 				{
45845 				setState(6413);
45846 				match(VIEW);
45847 				setState(6414);
45848 				match(DEFINITION);
45849 				}
45850 				break;
45851 			case 6:
45852 				enterOuterAlt(_localctx, 6);
45853 				{
45854 				setState(6415);
45855 				match(ALTER);
45856 				setState(6416);
45857 				match(ANY);
45858 				setState(6417);
45859 				match(ASSEMBLY);
45860 				}
45861 				break;
45862 			}
45863 		}
45864 		catch (RecognitionException re) {
45865 			_localctx.exception = re;
45866 			_errHandler.reportError(this, re);
45867 			_errHandler.recover(this, re);
45868 		}
45869 		finally {
45870 			exitRule();
45871 		}
45872 		return _localctx;
45873 	}
45874 
45875 	public static class AvailabilityGroupPermissionContext extends ParserRuleContext {
45876 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45877 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
45878 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45879 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
45880 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45881 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45882 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45883 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45884 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45885 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
45886 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
45887 		public AvailabilityGroupPermissionContext(ParserRuleContext parent, int invokingState) {
45888 			super(parent, invokingState);
45889 		}
45890 		@Override public int getRuleIndex() { return RULE_availabilityGroupPermission; }
45891 		@Override
45892 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45893 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAvailabilityGroupPermission(this);
45894 			else return visitor.visitChildren(this);
45895 		}
45896 	}
45897 
45898 	public final AvailabilityGroupPermissionContext availabilityGroupPermission() throws RecognitionException {
45899 		AvailabilityGroupPermissionContext _localctx = new AvailabilityGroupPermissionContext(_ctx, getState());
45900 		enterRule(_localctx, 872, RULE_availabilityGroupPermission);
45901 		int _la;
45902 		try {
45903 			setState(6437);
45904 			_errHandler.sync(this);
45905 			switch ( getInterpreter().adaptivePredict(_input,742,_ctx) ) {
45906 			case 1:
45907 				enterOuterAlt(_localctx, 1);
45908 				{
45909 				setState(6420);
45910 				match(ALTER);
45911 				}
45912 				break;
45913 			case 2:
45914 				enterOuterAlt(_localctx, 2);
45915 				{
45916 				setState(6421);
45917 				match(CONNECT);
45918 				}
45919 				break;
45920 			case 3:
45921 				enterOuterAlt(_localctx, 3);
45922 				{
45923 				setState(6422);
45924 				match(CONTROL);
45925 				setState(6424);
45926 				_errHandler.sync(this);
45927 				_la = _input.LA(1);
45928 				if (_la==SERVER) {
45929 					{
45930 					setState(6423);
45931 					match(SERVER);
45932 					}
45933 				}
45934 
45935 				}
45936 				break;
45937 			case 4:
45938 				enterOuterAlt(_localctx, 4);
45939 				{
45940 				setState(6426);
45941 				match(TAKE);
45942 				setState(6427);
45943 				match(OWNERSHIP);
45944 				}
45945 				break;
45946 			case 5:
45947 				enterOuterAlt(_localctx, 5);
45948 				{
45949 				setState(6428);
45950 				match(VIEW);
45951 				setState(6430);
45952 				_errHandler.sync(this);
45953 				_la = _input.LA(1);
45954 				if (_la==ANY) {
45955 					{
45956 					setState(6429);
45957 					match(ANY);
45958 					}
45959 				}
45960 
45961 				setState(6432);
45962 				match(DEFINITION);
45963 				}
45964 				break;
45965 			case 6:
45966 				enterOuterAlt(_localctx, 6);
45967 				{
45968 				setState(6433);
45969 				match(ALTER);
45970 				setState(6434);
45971 				match(ANY);
45972 				setState(6435);
45973 				match(AVAILABILITY);
45974 				setState(6436);
45975 				match(GROUP);
45976 				}
45977 				break;
45978 			}
45979 		}
45980 		catch (RecognitionException re) {
45981 			_localctx.exception = re;
45982 			_errHandler.reportError(this, re);
45983 			_errHandler.recover(this, re);
45984 		}
45985 		finally {
45986 			exitRule();
45987 		}
45988 		return _localctx;
45989 	}
45990 
45991 	public static class FullTextPermissionContext extends ParserRuleContext {
45992 		public FullTextCatalogPermissionContext fullTextCatalogPermission() {
45993 			return getRuleContext(FullTextCatalogPermissionContext.class,0);
45994 		}
45995 		public FullTextStoplistPermissionContext fullTextStoplistPermission() {
45996 			return getRuleContext(FullTextStoplistPermissionContext.class,0);
45997 		}
45998 		public FullTextPermissionContext(ParserRuleContext parent, int invokingState) {
45999 			super(parent, invokingState);
46000 		}
46001 		@Override public int getRuleIndex() { return RULE_fullTextPermission; }
46002 		@Override
46003 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46004 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextPermission(this);
46005 			else return visitor.visitChildren(this);
46006 		}
46007 	}
46008 
46009 	public final FullTextPermissionContext fullTextPermission() throws RecognitionException {
46010 		FullTextPermissionContext _localctx = new FullTextPermissionContext(_ctx, getState());
46011 		enterRule(_localctx, 874, RULE_fullTextPermission);
46012 		try {
46013 			setState(6441);
46014 			_errHandler.sync(this);
46015 			switch ( getInterpreter().adaptivePredict(_input,743,_ctx) ) {
46016 			case 1:
46017 				enterOuterAlt(_localctx, 1);
46018 				{
46019 				setState(6439);
46020 				fullTextCatalogPermission();
46021 				}
46022 				break;
46023 			case 2:
46024 				enterOuterAlt(_localctx, 2);
46025 				{
46026 				setState(6440);
46027 				fullTextStoplistPermission();
46028 				}
46029 				break;
46030 			}
46031 		}
46032 		catch (RecognitionException re) {
46033 			_localctx.exception = re;
46034 			_errHandler.reportError(this, re);
46035 			_errHandler.recover(this, re);
46036 		}
46037 		finally {
46038 			exitRule();
46039 		}
46040 		return _localctx;
46041 	}
46042 
46043 	public static class FullTextCatalogPermissionContext extends ParserRuleContext {
46044 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46045 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46046 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46047 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46048 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46049 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46050 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46051 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46052 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
46053 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
46054 		public FullTextCatalogPermissionContext(ParserRuleContext parent, int invokingState) {
46055 			super(parent, invokingState);
46056 		}
46057 		@Override public int getRuleIndex() { return RULE_fullTextCatalogPermission; }
46058 		@Override
46059 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46060 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextCatalogPermission(this);
46061 			else return visitor.visitChildren(this);
46062 		}
46063 	}
46064 
46065 	public final FullTextCatalogPermissionContext fullTextCatalogPermission() throws RecognitionException {
46066 		FullTextCatalogPermissionContext _localctx = new FullTextCatalogPermissionContext(_ctx, getState());
46067 		enterRule(_localctx, 876, RULE_fullTextCatalogPermission);
46068 		try {
46069 			setState(6454);
46070 			_errHandler.sync(this);
46071 			switch ( getInterpreter().adaptivePredict(_input,744,_ctx) ) {
46072 			case 1:
46073 				enterOuterAlt(_localctx, 1);
46074 				{
46075 				setState(6443);
46076 				match(CONTROL);
46077 				}
46078 				break;
46079 			case 2:
46080 				enterOuterAlt(_localctx, 2);
46081 				{
46082 				setState(6444);
46083 				match(TAKE);
46084 				setState(6445);
46085 				match(OWNERSHIP);
46086 				}
46087 				break;
46088 			case 3:
46089 				enterOuterAlt(_localctx, 3);
46090 				{
46091 				setState(6446);
46092 				match(ALTER);
46093 				}
46094 				break;
46095 			case 4:
46096 				enterOuterAlt(_localctx, 4);
46097 				{
46098 				setState(6447);
46099 				match(REFERENCES);
46100 				}
46101 				break;
46102 			case 5:
46103 				enterOuterAlt(_localctx, 5);
46104 				{
46105 				setState(6448);
46106 				match(VIEW);
46107 				setState(6449);
46108 				match(DEFINITION);
46109 				}
46110 				break;
46111 			case 6:
46112 				enterOuterAlt(_localctx, 6);
46113 				{
46114 				setState(6450);
46115 				match(ALTER);
46116 				setState(6451);
46117 				match(ANY);
46118 				setState(6452);
46119 				match(FULLTEXT);
46120 				setState(6453);
46121 				match(CATALOG);
46122 				}
46123 				break;
46124 			}
46125 		}
46126 		catch (RecognitionException re) {
46127 			_localctx.exception = re;
46128 			_errHandler.reportError(this, re);
46129 			_errHandler.recover(this, re);
46130 		}
46131 		finally {
46132 			exitRule();
46133 		}
46134 		return _localctx;
46135 	}
46136 
46137 	public static class FullTextStoplistPermissionContext extends ParserRuleContext {
46138 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46139 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46140 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46141 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46142 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46143 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46144 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46145 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46146 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
46147 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
46148 		public FullTextStoplistPermissionContext(ParserRuleContext parent, int invokingState) {
46149 			super(parent, invokingState);
46150 		}
46151 		@Override public int getRuleIndex() { return RULE_fullTextStoplistPermission; }
46152 		@Override
46153 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46154 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextStoplistPermission(this);
46155 			else return visitor.visitChildren(this);
46156 		}
46157 	}
46158 
46159 	public final FullTextStoplistPermissionContext fullTextStoplistPermission() throws RecognitionException {
46160 		FullTextStoplistPermissionContext _localctx = new FullTextStoplistPermissionContext(_ctx, getState());
46161 		enterRule(_localctx, 878, RULE_fullTextStoplistPermission);
46162 		try {
46163 			setState(6467);
46164 			_errHandler.sync(this);
46165 			switch ( getInterpreter().adaptivePredict(_input,745,_ctx) ) {
46166 			case 1:
46167 				enterOuterAlt(_localctx, 1);
46168 				{
46169 				setState(6456);
46170 				match(ALTER);
46171 				}
46172 				break;
46173 			case 2:
46174 				enterOuterAlt(_localctx, 2);
46175 				{
46176 				setState(6457);
46177 				match(CONTROL);
46178 				}
46179 				break;
46180 			case 3:
46181 				enterOuterAlt(_localctx, 3);
46182 				{
46183 				setState(6458);
46184 				match(REFERENCES);
46185 				}
46186 				break;
46187 			case 4:
46188 				enterOuterAlt(_localctx, 4);
46189 				{
46190 				setState(6459);
46191 				match(TAKE);
46192 				setState(6460);
46193 				match(OWNERSHIP);
46194 				}
46195 				break;
46196 			case 5:
46197 				enterOuterAlt(_localctx, 5);
46198 				{
46199 				setState(6461);
46200 				match(VIEW);
46201 				setState(6462);
46202 				match(DEFINITION);
46203 				}
46204 				break;
46205 			case 6:
46206 				enterOuterAlt(_localctx, 6);
46207 				{
46208 				setState(6463);
46209 				match(ALTER);
46210 				setState(6464);
46211 				match(ANY);
46212 				setState(6465);
46213 				match(FULLTEXT);
46214 				setState(6466);
46215 				match(CATALOG);
46216 				}
46217 				break;
46218 			}
46219 		}
46220 		catch (RecognitionException re) {
46221 			_localctx.exception = re;
46222 			_errHandler.reportError(this, re);
46223 			_errHandler.recover(this, re);
46224 		}
46225 		finally {
46226 			exitRule();
46227 		}
46228 		return _localctx;
46229 	}
46230 
46231 	public static class TypePermissionContext extends ParserRuleContext {
46232 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46233 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
46234 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46235 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46236 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46237 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46238 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46239 		public TypePermissionContext(ParserRuleContext parent, int invokingState) {
46240 			super(parent, invokingState);
46241 		}
46242 		@Override public int getRuleIndex() { return RULE_typePermission; }
46243 		@Override
46244 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46245 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTypePermission(this);
46246 			else return visitor.visitChildren(this);
46247 		}
46248 	}
46249 
46250 	public final TypePermissionContext typePermission() throws RecognitionException {
46251 		TypePermissionContext _localctx = new TypePermissionContext(_ctx, getState());
46252 		enterRule(_localctx, 880, RULE_typePermission);
46253 		try {
46254 			setState(6476);
46255 			_errHandler.sync(this);
46256 			switch (_input.LA(1)) {
46257 			case CONTROL:
46258 				enterOuterAlt(_localctx, 1);
46259 				{
46260 				setState(6469);
46261 				match(CONTROL);
46262 				}
46263 				break;
46264 			case EXECUTE:
46265 				enterOuterAlt(_localctx, 2);
46266 				{
46267 				setState(6470);
46268 				match(EXECUTE);
46269 				}
46270 				break;
46271 			case REFERENCES:
46272 				enterOuterAlt(_localctx, 3);
46273 				{
46274 				setState(6471);
46275 				match(REFERENCES);
46276 				}
46277 				break;
46278 			case TAKE:
46279 				enterOuterAlt(_localctx, 4);
46280 				{
46281 				setState(6472);
46282 				match(TAKE);
46283 				setState(6473);
46284 				match(OWNERSHIP);
46285 				}
46286 				break;
46287 			case VIEW:
46288 				enterOuterAlt(_localctx, 5);
46289 				{
46290 				setState(6474);
46291 				match(VIEW);
46292 				setState(6475);
46293 				match(DEFINITION);
46294 				}
46295 				break;
46296 			default:
46297 				throw new NoViableAltException(this);
46298 			}
46299 		}
46300 		catch (RecognitionException re) {
46301 			_localctx.exception = re;
46302 			_errHandler.reportError(this, re);
46303 			_errHandler.recover(this, re);
46304 		}
46305 		finally {
46306 			exitRule();
46307 		}
46308 		return _localctx;
46309 	}
46310 
46311 	public static class XmlSchemaCollectionPermissionContext extends ParserRuleContext {
46312 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46313 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46314 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
46315 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46316 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46317 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46318 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46319 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46320 		public XmlSchemaCollectionPermissionContext(ParserRuleContext parent, int invokingState) {
46321 			super(parent, invokingState);
46322 		}
46323 		@Override public int getRuleIndex() { return RULE_xmlSchemaCollectionPermission; }
46324 		@Override
46325 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46326 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlSchemaCollectionPermission(this);
46327 			else return visitor.visitChildren(this);
46328 		}
46329 	}
46330 
46331 	public final XmlSchemaCollectionPermissionContext xmlSchemaCollectionPermission() throws RecognitionException {
46332 		XmlSchemaCollectionPermissionContext _localctx = new XmlSchemaCollectionPermissionContext(_ctx, getState());
46333 		enterRule(_localctx, 882, RULE_xmlSchemaCollectionPermission);
46334 		try {
46335 			setState(6486);
46336 			_errHandler.sync(this);
46337 			switch (_input.LA(1)) {
46338 			case ALTER:
46339 				enterOuterAlt(_localctx, 1);
46340 				{
46341 				setState(6478);
46342 				match(ALTER);
46343 				}
46344 				break;
46345 			case CONTROL:
46346 				enterOuterAlt(_localctx, 2);
46347 				{
46348 				setState(6479);
46349 				match(CONTROL);
46350 				}
46351 				break;
46352 			case EXECUTE:
46353 				enterOuterAlt(_localctx, 3);
46354 				{
46355 				setState(6480);
46356 				match(EXECUTE);
46357 				}
46358 				break;
46359 			case REFERENCES:
46360 				enterOuterAlt(_localctx, 4);
46361 				{
46362 				setState(6481);
46363 				match(REFERENCES);
46364 				}
46365 				break;
46366 			case TAKE:
46367 				enterOuterAlt(_localctx, 5);
46368 				{
46369 				setState(6482);
46370 				match(TAKE);
46371 				setState(6483);
46372 				match(OWNERSHIP);
46373 				}
46374 				break;
46375 			case VIEW:
46376 				enterOuterAlt(_localctx, 6);
46377 				{
46378 				setState(6484);
46379 				match(VIEW);
46380 				setState(6485);
46381 				match(DEFINITION);
46382 				}
46383 				break;
46384 			default:
46385 				throw new NoViableAltException(this);
46386 			}
46387 		}
46388 		catch (RecognitionException re) {
46389 			_localctx.exception = re;
46390 			_errHandler.reportError(this, re);
46391 			_errHandler.recover(this, re);
46392 		}
46393 		finally {
46394 			exitRule();
46395 		}
46396 		return _localctx;
46397 	}
46398 
46399 	public static class SystemObjectPermissionContext extends ParserRuleContext {
46400 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
46401 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
46402 		public SystemObjectPermissionContext(ParserRuleContext parent, int invokingState) {
46403 			super(parent, invokingState);
46404 		}
46405 		@Override public int getRuleIndex() { return RULE_systemObjectPermission; }
46406 		@Override
46407 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46408 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSystemObjectPermission(this);
46409 			else return visitor.visitChildren(this);
46410 		}
46411 	}
46412 
46413 	public final SystemObjectPermissionContext systemObjectPermission() throws RecognitionException {
46414 		SystemObjectPermissionContext _localctx = new SystemObjectPermissionContext(_ctx, getState());
46415 		enterRule(_localctx, 884, RULE_systemObjectPermission);
46416 		int _la;
46417 		try {
46418 			enterOuterAlt(_localctx, 1);
46419 			{
46420 			setState(6488);
46421 			_la = _input.LA(1);
46422 			if ( !(_la==SELECT || _la==EXECUTE) ) {
46423 			_errHandler.recoverInline(this);
46424 			}
46425 			else {
46426 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46427 				_errHandler.reportMatch(this);
46428 				consume();
46429 			}
46430 			}
46431 		}
46432 		catch (RecognitionException re) {
46433 			_localctx.exception = re;
46434 			_errHandler.reportError(this, re);
46435 			_errHandler.recover(this, re);
46436 		}
46437 		finally {
46438 			exitRule();
46439 		}
46440 		return _localctx;
46441 	}
46442 
46443 	public static class Class_Context extends ParserRuleContext {
46444 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
46445 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
46446 		public TerminalNode COLON_(int i) {
46447 			return getToken(SQLServerStatementParser.COLON_, i);
46448 		}
46449 		public Class_Context(ParserRuleContext parent, int invokingState) {
46450 			super(parent, invokingState);
46451 		}
46452 		@Override public int getRuleIndex() { return RULE_class_; }
46453 		@Override
46454 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46455 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClass_(this);
46456 			else return visitor.visitChildren(this);
46457 		}
46458 	}
46459 
46460 	public final Class_Context class_() throws RecognitionException {
46461 		Class_Context _localctx = new Class_Context(_ctx, getState());
46462 		enterRule(_localctx, 886, RULE_class_);
46463 		try {
46464 			enterOuterAlt(_localctx, 1);
46465 			{
46466 			setState(6490);
46467 			match(IDENTIFIER_);
46468 			setState(6491);
46469 			match(COLON_);
46470 			setState(6492);
46471 			match(COLON_);
46472 			}
46473 		}
46474 		catch (RecognitionException re) {
46475 			_localctx.exception = re;
46476 			_errHandler.reportError(this, re);
46477 			_errHandler.recover(this, re);
46478 		}
46479 		finally {
46480 			exitRule();
46481 		}
46482 		return _localctx;
46483 	}
46484 
46485 	public static class ClassItemContext extends ParserRuleContext {
46486 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
46487 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
46488 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
46489 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
46490 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
46491 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
46492 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
46493 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
46494 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
46495 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
46496 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
46497 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
46498 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
46499 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
46500 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
46501 		public TerminalNode STOPLIST() { return getToken(SQLServerStatementParser.STOPLIST, 0); }
46502 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
46503 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
46504 		public TerminalNode SEARCH() { return getToken(SQLServerStatementParser.SEARCH, 0); }
46505 		public TerminalNode PROPERTY() { return getToken(SQLServerStatementParser.PROPERTY, 0); }
46506 		public TerminalNode LIST() { return getToken(SQLServerStatementParser.LIST, 0); }
46507 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
46508 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
46509 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
46510 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
46511 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
46512 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
46513 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
46514 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
46515 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
46516 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
46517 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
46518 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
46519 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
46520 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
46521 		public ClassItemContext(ParserRuleContext parent, int invokingState) {
46522 			super(parent, invokingState);
46523 		}
46524 		@Override public int getRuleIndex() { return RULE_classItem; }
46525 		@Override
46526 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46527 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassItem(this);
46528 			else return visitor.visitChildren(this);
46529 		}
46530 	}
46531 
46532 	public final ClassItemContext classItem() throws RecognitionException {
46533 		ClassItemContext _localctx = new ClassItemContext(_ctx, getState());
46534 		enterRule(_localctx, 888, RULE_classItem);
46535 		int _la;
46536 		try {
46537 			setState(6534);
46538 			_errHandler.sync(this);
46539 			switch (_input.LA(1)) {
46540 			case ASSEMBLY:
46541 				enterOuterAlt(_localctx, 1);
46542 				{
46543 				setState(6494);
46544 				match(ASSEMBLY);
46545 				}
46546 				break;
46547 			case ASYMMETRIC:
46548 				enterOuterAlt(_localctx, 2);
46549 				{
46550 				setState(6495);
46551 				match(ASYMMETRIC);
46552 				setState(6496);
46553 				match(KEY);
46554 				}
46555 				break;
46556 			case AVAILABILITY:
46557 				enterOuterAlt(_localctx, 3);
46558 				{
46559 				setState(6497);
46560 				match(AVAILABILITY);
46561 				setState(6498);
46562 				match(GROUP);
46563 				}
46564 				break;
46565 			case CERTIFICATE:
46566 				enterOuterAlt(_localctx, 4);
46567 				{
46568 				setState(6499);
46569 				match(CERTIFICATE);
46570 				}
46571 				break;
46572 			case USER:
46573 				enterOuterAlt(_localctx, 5);
46574 				{
46575 				setState(6500);
46576 				match(USER);
46577 				}
46578 				break;
46579 			case ROLE:
46580 				enterOuterAlt(_localctx, 6);
46581 				{
46582 				setState(6501);
46583 				match(ROLE);
46584 				}
46585 				break;
46586 			case APPLICATION:
46587 				enterOuterAlt(_localctx, 7);
46588 				{
46589 				setState(6502);
46590 				match(APPLICATION);
46591 				setState(6503);
46592 				match(ROLE);
46593 				}
46594 				break;
46595 			case DATABASE:
46596 				enterOuterAlt(_localctx, 8);
46597 				{
46598 				setState(6504);
46599 				match(DATABASE);
46600 				setState(6505);
46601 				match(SCOPED);
46602 				setState(6506);
46603 				match(CREDENTIAL);
46604 				}
46605 				break;
46606 			case ENDPOINT:
46607 				enterOuterAlt(_localctx, 9);
46608 				{
46609 				setState(6507);
46610 				match(ENDPOINT);
46611 				}
46612 				break;
46613 			case FULLTEXT:
46614 				enterOuterAlt(_localctx, 10);
46615 				{
46616 				setState(6508);
46617 				match(FULLTEXT);
46618 				setState(6509);
46619 				_la = _input.LA(1);
46620 				if ( !(_la==CATALOG || _la==STOPLIST) ) {
46621 				_errHandler.recoverInline(this);
46622 				}
46623 				else {
46624 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46625 					_errHandler.reportMatch(this);
46626 					consume();
46627 				}
46628 				}
46629 				break;
46630 			case OBJECT:
46631 				enterOuterAlt(_localctx, 11);
46632 				{
46633 				setState(6510);
46634 				match(OBJECT);
46635 				}
46636 				break;
46637 			case SCHEMA:
46638 				enterOuterAlt(_localctx, 12);
46639 				{
46640 				setState(6511);
46641 				match(SCHEMA);
46642 				}
46643 				break;
46644 			case SEARCH:
46645 				enterOuterAlt(_localctx, 13);
46646 				{
46647 				setState(6512);
46648 				match(SEARCH);
46649 				setState(6513);
46650 				match(PROPERTY);
46651 				setState(6514);
46652 				match(LIST);
46653 				}
46654 				break;
46655 			case LOGIN:
46656 				enterOuterAlt(_localctx, 14);
46657 				{
46658 				setState(6515);
46659 				match(LOGIN);
46660 				}
46661 				break;
46662 			case SERVER:
46663 				enterOuterAlt(_localctx, 15);
46664 				{
46665 				setState(6516);
46666 				match(SERVER);
46667 				setState(6517);
46668 				match(ROLE);
46669 				}
46670 				break;
46671 			case CONTRACT:
46672 				enterOuterAlt(_localctx, 16);
46673 				{
46674 				setState(6518);
46675 				match(CONTRACT);
46676 				}
46677 				break;
46678 			case MESSAGE:
46679 				enterOuterAlt(_localctx, 17);
46680 				{
46681 				setState(6519);
46682 				match(MESSAGE);
46683 				setState(6520);
46684 				match(TYPE);
46685 				}
46686 				break;
46687 			case REMOTE:
46688 				enterOuterAlt(_localctx, 18);
46689 				{
46690 				setState(6521);
46691 				match(REMOTE);
46692 				setState(6522);
46693 				match(SERVICE);
46694 				setState(6523);
46695 				match(BINDING);
46696 				}
46697 				break;
46698 			case ROUTE:
46699 				enterOuterAlt(_localctx, 19);
46700 				{
46701 				setState(6524);
46702 				match(ROUTE);
46703 				}
46704 				break;
46705 			case SERVICE:
46706 				enterOuterAlt(_localctx, 20);
46707 				{
46708 				setState(6525);
46709 				match(SERVICE);
46710 				}
46711 				break;
46712 			case SYMMETRIC:
46713 				enterOuterAlt(_localctx, 21);
46714 				{
46715 				setState(6526);
46716 				match(SYMMETRIC);
46717 				setState(6527);
46718 				match(KEY);
46719 				}
46720 				break;
46721 			case SELECT:
46722 				enterOuterAlt(_localctx, 22);
46723 				{
46724 				setState(6528);
46725 				match(SELECT);
46726 				}
46727 				break;
46728 			case EXECUTE:
46729 				enterOuterAlt(_localctx, 23);
46730 				{
46731 				setState(6529);
46732 				match(EXECUTE);
46733 				}
46734 				break;
46735 			case TYPE:
46736 				enterOuterAlt(_localctx, 24);
46737 				{
46738 				setState(6530);
46739 				match(TYPE);
46740 				}
46741 				break;
46742 			case XML:
46743 				enterOuterAlt(_localctx, 25);
46744 				{
46745 				setState(6531);
46746 				match(XML);
46747 				setState(6532);
46748 				match(SCHEMA);
46749 				setState(6533);
46750 				match(COLLECTION);
46751 				}
46752 				break;
46753 			default:
46754 				throw new NoViableAltException(this);
46755 			}
46756 		}
46757 		catch (RecognitionException re) {
46758 			_localctx.exception = re;
46759 			_errHandler.reportError(this, re);
46760 			_errHandler.recover(this, re);
46761 		}
46762 		finally {
46763 			exitRule();
46764 		}
46765 		return _localctx;
46766 	}
46767 
46768 	public static class ClassTypeContext extends ParserRuleContext {
46769 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
46770 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
46771 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
46772 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
46773 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
46774 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
46775 		public ClassTypeContext(ParserRuleContext parent, int invokingState) {
46776 			super(parent, invokingState);
46777 		}
46778 		@Override public int getRuleIndex() { return RULE_classType; }
46779 		@Override
46780 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46781 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassType(this);
46782 			else return visitor.visitChildren(this);
46783 		}
46784 	}
46785 
46786 	public final ClassTypeContext classType() throws RecognitionException {
46787 		ClassTypeContext _localctx = new ClassTypeContext(_ctx, getState());
46788 		enterRule(_localctx, 890, RULE_classType);
46789 		int _la;
46790 		try {
46791 			enterOuterAlt(_localctx, 1);
46792 			{
46793 			setState(6536);
46794 			_la = _input.LA(1);
46795 			if ( !(_la==SCHEMA || ((((_la - 204)) & ~0x3f) == 0 && ((1L << (_la - 204)) & ((1L << (DATABASE - 204)) | (1L << (USER - 204)) | (1L << (ROLE - 204)))) != 0) || _la==LOGIN || _la==OBJECT) ) {
46796 			_errHandler.recoverInline(this);
46797 			}
46798 			else {
46799 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46800 				_errHandler.reportMatch(this);
46801 				consume();
46802 			}
46803 			}
46804 		}
46805 		catch (RecognitionException re) {
46806 			_localctx.exception = re;
46807 			_errHandler.reportError(this, re);
46808 			_errHandler.recover(this, re);
46809 		}
46810 		finally {
46811 			exitRule();
46812 		}
46813 		return _localctx;
46814 	}
46815 
46816 	public static class RoleClauseContext extends ParserRuleContext {
46817 		public IgnoredIdentifiersContext ignoredIdentifiers() {
46818 			return getRuleContext(IgnoredIdentifiersContext.class,0);
46819 		}
46820 		public RoleClauseContext(ParserRuleContext parent, int invokingState) {
46821 			super(parent, invokingState);
46822 		}
46823 		@Override public int getRuleIndex() { return RULE_roleClause; }
46824 		@Override
46825 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46826 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRoleClause(this);
46827 			else return visitor.visitChildren(this);
46828 		}
46829 	}
46830 
46831 	public final RoleClauseContext roleClause() throws RecognitionException {
46832 		RoleClauseContext _localctx = new RoleClauseContext(_ctx, getState());
46833 		enterRule(_localctx, 892, RULE_roleClause);
46834 		try {
46835 			enterOuterAlt(_localctx, 1);
46836 			{
46837 			setState(6538);
46838 			ignoredIdentifiers();
46839 			}
46840 		}
46841 		catch (RecognitionException re) {
46842 			_localctx.exception = re;
46843 			_errHandler.reportError(this, re);
46844 			_errHandler.recover(this, re);
46845 		}
46846 		finally {
46847 			exitRule();
46848 		}
46849 		return _localctx;
46850 	}
46851 
46852 	public static class SetUserContext extends ParserRuleContext {
46853 		public TerminalNode SETUSER() { return getToken(SQLServerStatementParser.SETUSER, 0); }
46854 		public StringLiteralsContext stringLiterals() {
46855 			return getRuleContext(StringLiteralsContext.class,0);
46856 		}
46857 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
46858 		public TerminalNode NORESET() { return getToken(SQLServerStatementParser.NORESET, 0); }
46859 		public SetUserContext(ParserRuleContext parent, int invokingState) {
46860 			super(parent, invokingState);
46861 		}
46862 		@Override public int getRuleIndex() { return RULE_setUser; }
46863 		@Override
46864 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46865 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetUser(this);
46866 			else return visitor.visitChildren(this);
46867 		}
46868 	}
46869 
46870 	public final SetUserContext setUser() throws RecognitionException {
46871 		SetUserContext _localctx = new SetUserContext(_ctx, getState());
46872 		enterRule(_localctx, 894, RULE_setUser);
46873 		int _la;
46874 		try {
46875 			enterOuterAlt(_localctx, 1);
46876 			{
46877 			setState(6540);
46878 			match(SETUSER);
46879 			setState(6546);
46880 			_errHandler.sync(this);
46881 			_la = _input.LA(1);
46882 			if (_la==STRING_ || _la==NCHAR_TEXT) {
46883 				{
46884 				setState(6541);
46885 				stringLiterals();
46886 				setState(6544);
46887 				_errHandler.sync(this);
46888 				_la = _input.LA(1);
46889 				if (_la==WITH) {
46890 					{
46891 					setState(6542);
46892 					match(WITH);
46893 					setState(6543);
46894 					match(NORESET);
46895 					}
46896 				}
46897 
46898 				}
46899 			}
46900 
46901 			}
46902 		}
46903 		catch (RecognitionException re) {
46904 			_localctx.exception = re;
46905 			_errHandler.reportError(this, re);
46906 			_errHandler.recover(this, re);
46907 		}
46908 		finally {
46909 			exitRule();
46910 		}
46911 		return _localctx;
46912 	}
46913 
46914 	public static class CreateUserContext extends ParserRuleContext {
46915 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
46916 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
46917 		public CreateUserLoginClauseContext createUserLoginClause() {
46918 			return getRuleContext(CreateUserLoginClauseContext.class,0);
46919 		}
46920 		public CreateUserWindowsPrincipalClauseContext createUserWindowsPrincipalClause() {
46921 			return getRuleContext(CreateUserWindowsPrincipalClauseContext.class,0);
46922 		}
46923 		public CreateUserLoginWindowsPrincipalClauseContext createUserLoginWindowsPrincipalClause() {
46924 			return getRuleContext(CreateUserLoginWindowsPrincipalClauseContext.class,0);
46925 		}
46926 		public CreateUserWithoutLoginClauseContext createUserWithoutLoginClause() {
46927 			return getRuleContext(CreateUserWithoutLoginClauseContext.class,0);
46928 		}
46929 		public CreateUserFromExternalProviderClauseContext createUserFromExternalProviderClause() {
46930 			return getRuleContext(CreateUserFromExternalProviderClauseContext.class,0);
46931 		}
46932 		public CreateUserWithDefaultSchemaContext createUserWithDefaultSchema() {
46933 			return getRuleContext(CreateUserWithDefaultSchemaContext.class,0);
46934 		}
46935 		public CreateUserWithAzureActiveDirectoryPrincipalClauseContext createUserWithAzureActiveDirectoryPrincipalClause() {
46936 			return getRuleContext(CreateUserWithAzureActiveDirectoryPrincipalClauseContext.class,0);
46937 		}
46938 		public UserNameContext userName() {
46939 			return getRuleContext(UserNameContext.class,0);
46940 		}
46941 		public CreateUserContext(ParserRuleContext parent, int invokingState) {
46942 			super(parent, invokingState);
46943 		}
46944 		@Override public int getRuleIndex() { return RULE_createUser; }
46945 		@Override
46946 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46947 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUser(this);
46948 			else return visitor.visitChildren(this);
46949 		}
46950 	}
46951 
46952 	public final CreateUserContext createUser() throws RecognitionException {
46953 		CreateUserContext _localctx = new CreateUserContext(_ctx, getState());
46954 		enterRule(_localctx, 896, RULE_createUser);
46955 		try {
46956 			enterOuterAlt(_localctx, 1);
46957 			{
46958 			setState(6548);
46959 			match(CREATE);
46960 			setState(6549);
46961 			match(USER);
46962 			setState(6558);
46963 			_errHandler.sync(this);
46964 			switch ( getInterpreter().adaptivePredict(_input,751,_ctx) ) {
46965 			case 1:
46966 				{
46967 				setState(6550);
46968 				createUserLoginClause();
46969 				}
46970 				break;
46971 			case 2:
46972 				{
46973 				setState(6551);
46974 				createUserWindowsPrincipalClause();
46975 				}
46976 				break;
46977 			case 3:
46978 				{
46979 				setState(6552);
46980 				createUserLoginWindowsPrincipalClause();
46981 				}
46982 				break;
46983 			case 4:
46984 				{
46985 				setState(6553);
46986 				createUserWithoutLoginClause();
46987 				}
46988 				break;
46989 			case 5:
46990 				{
46991 				setState(6554);
46992 				createUserFromExternalProviderClause();
46993 				}
46994 				break;
46995 			case 6:
46996 				{
46997 				setState(6555);
46998 				createUserWithDefaultSchema();
46999 				}
47000 				break;
47001 			case 7:
47002 				{
47003 				setState(6556);
47004 				createUserWithAzureActiveDirectoryPrincipalClause();
47005 				}
47006 				break;
47007 			case 8:
47008 				{
47009 				setState(6557);
47010 				userName();
47011 				}
47012 				break;
47013 			}
47014 			}
47015 		}
47016 		catch (RecognitionException re) {
47017 			_localctx.exception = re;
47018 			_errHandler.reportError(this, re);
47019 			_errHandler.recover(this, re);
47020 		}
47021 		finally {
47022 			exitRule();
47023 		}
47024 		return _localctx;
47025 	}
47026 
47027 	public static class CreateUserLoginClauseContext extends ParserRuleContext {
47028 		public UserNameContext userName() {
47029 			return getRuleContext(UserNameContext.class,0);
47030 		}
47031 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47032 		public IdentifierContext identifier() {
47033 			return getRuleContext(IdentifierContext.class,0);
47034 		}
47035 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47036 		public List<LimitedOptionsListContext> limitedOptionsList() {
47037 			return getRuleContexts(LimitedOptionsListContext.class);
47038 		}
47039 		public LimitedOptionsListContext limitedOptionsList(int i) {
47040 			return getRuleContext(LimitedOptionsListContext.class,i);
47041 		}
47042 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
47043 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
47044 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
47045 		public TerminalNode COMMA_(int i) {
47046 			return getToken(SQLServerStatementParser.COMMA_, i);
47047 		}
47048 		public CreateUserLoginClauseContext(ParserRuleContext parent, int invokingState) {
47049 			super(parent, invokingState);
47050 		}
47051 		@Override public int getRuleIndex() { return RULE_createUserLoginClause; }
47052 		@Override
47053 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47054 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserLoginClause(this);
47055 			else return visitor.visitChildren(this);
47056 		}
47057 	}
47058 
47059 	public final CreateUserLoginClauseContext createUserLoginClause() throws RecognitionException {
47060 		CreateUserLoginClauseContext _localctx = new CreateUserLoginClauseContext(_ctx, getState());
47061 		enterRule(_localctx, 898, RULE_createUserLoginClause);
47062 		int _la;
47063 		try {
47064 			enterOuterAlt(_localctx, 1);
47065 			{
47066 			setState(6560);
47067 			userName();
47068 			setState(6564);
47069 			_errHandler.sync(this);
47070 			_la = _input.LA(1);
47071 			if (_la==FROM || _la==FOR) {
47072 				{
47073 				setState(6561);
47074 				_la = _input.LA(1);
47075 				if ( !(_la==FROM || _la==FOR) ) {
47076 				_errHandler.recoverInline(this);
47077 				}
47078 				else {
47079 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47080 					_errHandler.reportMatch(this);
47081 					consume();
47082 				}
47083 				setState(6562);
47084 				match(LOGIN);
47085 				setState(6563);
47086 				identifier();
47087 				}
47088 			}
47089 
47090 			setState(6575);
47091 			_errHandler.sync(this);
47092 			_la = _input.LA(1);
47093 			if (_la==WITH) {
47094 				{
47095 				setState(6566);
47096 				match(WITH);
47097 				setState(6567);
47098 				limitedOptionsList();
47099 				setState(6572);
47100 				_errHandler.sync(this);
47101 				_la = _input.LA(1);
47102 				while (_la==COMMA_) {
47103 					{
47104 					{
47105 					setState(6568);
47106 					match(COMMA_);
47107 					setState(6569);
47108 					limitedOptionsList();
47109 					}
47110 					}
47111 					setState(6574);
47112 					_errHandler.sync(this);
47113 					_la = _input.LA(1);
47114 				}
47115 				}
47116 			}
47117 
47118 			}
47119 		}
47120 		catch (RecognitionException re) {
47121 			_localctx.exception = re;
47122 			_errHandler.reportError(this, re);
47123 			_errHandler.recover(this, re);
47124 		}
47125 		finally {
47126 			exitRule();
47127 		}
47128 		return _localctx;
47129 	}
47130 
47131 	public static class CreateUserWindowsPrincipalClauseContext extends ParserRuleContext {
47132 		public WindowsPrincipalContext windowsPrincipal() {
47133 			return getRuleContext(WindowsPrincipalContext.class,0);
47134 		}
47135 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47136 		public List<OptionsListContext> optionsList() {
47137 			return getRuleContexts(OptionsListContext.class);
47138 		}
47139 		public OptionsListContext optionsList(int i) {
47140 			return getRuleContext(OptionsListContext.class,i);
47141 		}
47142 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
47143 		public TerminalNode COMMA_(int i) {
47144 			return getToken(SQLServerStatementParser.COMMA_, i);
47145 		}
47146 		public UserNameContext userName() {
47147 			return getRuleContext(UserNameContext.class,0);
47148 		}
47149 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
47150 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
47151 		public StringLiteralsContext stringLiterals() {
47152 			return getRuleContext(StringLiteralsContext.class,0);
47153 		}
47154 		public AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() {
47155 			return getRuleContext(AzureActiveDirectoryPrincipalContext.class,0);
47156 		}
47157 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
47158 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
47159 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
47160 		public CreateUserWindowsPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
47161 			super(parent, invokingState);
47162 		}
47163 		@Override public int getRuleIndex() { return RULE_createUserWindowsPrincipalClause; }
47164 		@Override
47165 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47166 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWindowsPrincipalClause(this);
47167 			else return visitor.visitChildren(this);
47168 		}
47169 	}
47170 
47171 	public final CreateUserWindowsPrincipalClauseContext createUserWindowsPrincipalClause() throws RecognitionException {
47172 		CreateUserWindowsPrincipalClauseContext _localctx = new CreateUserWindowsPrincipalClauseContext(_ctx, getState());
47173 		enterRule(_localctx, 900, RULE_createUserWindowsPrincipalClause);
47174 		int _la;
47175 		try {
47176 			setState(6610);
47177 			_errHandler.sync(this);
47178 			switch ( getInterpreter().adaptivePredict(_input,759,_ctx) ) {
47179 			case 1:
47180 				enterOuterAlt(_localctx, 1);
47181 				{
47182 				setState(6577);
47183 				windowsPrincipal();
47184 				setState(6587);
47185 				_errHandler.sync(this);
47186 				_la = _input.LA(1);
47187 				if (_la==WITH) {
47188 					{
47189 					setState(6578);
47190 					match(WITH);
47191 					setState(6579);
47192 					optionsList();
47193 					setState(6584);
47194 					_errHandler.sync(this);
47195 					_la = _input.LA(1);
47196 					while (_la==COMMA_) {
47197 						{
47198 						{
47199 						setState(6580);
47200 						match(COMMA_);
47201 						setState(6581);
47202 						optionsList();
47203 						}
47204 						}
47205 						setState(6586);
47206 						_errHandler.sync(this);
47207 						_la = _input.LA(1);
47208 					}
47209 					}
47210 				}
47211 
47212 				}
47213 				break;
47214 			case 2:
47215 				enterOuterAlt(_localctx, 2);
47216 				{
47217 				setState(6589);
47218 				userName();
47219 				setState(6590);
47220 				match(WITH);
47221 				setState(6591);
47222 				match(PASSWORD);
47223 				setState(6592);
47224 				match(EQ_);
47225 				setState(6593);
47226 				stringLiterals();
47227 				setState(6603);
47228 				_errHandler.sync(this);
47229 				_la = _input.LA(1);
47230 				if (_la==COMMA_) {
47231 					{
47232 					setState(6594);
47233 					match(COMMA_);
47234 					setState(6595);
47235 					optionsList();
47236 					setState(6600);
47237 					_errHandler.sync(this);
47238 					_la = _input.LA(1);
47239 					while (_la==COMMA_) {
47240 						{
47241 						{
47242 						setState(6596);
47243 						match(COMMA_);
47244 						setState(6597);
47245 						optionsList();
47246 						}
47247 						}
47248 						setState(6602);
47249 						_errHandler.sync(this);
47250 						_la = _input.LA(1);
47251 					}
47252 					}
47253 				}
47254 
47255 				}
47256 				break;
47257 			case 3:
47258 				enterOuterAlt(_localctx, 3);
47259 				{
47260 				setState(6605);
47261 				azureActiveDirectoryPrincipal();
47262 				setState(6606);
47263 				match(FROM);
47264 				setState(6607);
47265 				match(EXTERNAL);
47266 				setState(6608);
47267 				match(PROVIDER);
47268 				}
47269 				break;
47270 			}
47271 		}
47272 		catch (RecognitionException re) {
47273 			_localctx.exception = re;
47274 			_errHandler.reportError(this, re);
47275 			_errHandler.recover(this, re);
47276 		}
47277 		finally {
47278 			exitRule();
47279 		}
47280 		return _localctx;
47281 	}
47282 
47283 	public static class CreateUserLoginWindowsPrincipalClauseContext extends ParserRuleContext {
47284 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47285 		public List<LimitedOptionsListContext> limitedOptionsList() {
47286 			return getRuleContexts(LimitedOptionsListContext.class);
47287 		}
47288 		public LimitedOptionsListContext limitedOptionsList(int i) {
47289 			return getRuleContext(LimitedOptionsListContext.class,i);
47290 		}
47291 		public List<WindowsPrincipalContext> windowsPrincipal() {
47292 			return getRuleContexts(WindowsPrincipalContext.class);
47293 		}
47294 		public WindowsPrincipalContext windowsPrincipal(int i) {
47295 			return getRuleContext(WindowsPrincipalContext.class,i);
47296 		}
47297 		public UserNameContext userName() {
47298 			return getRuleContext(UserNameContext.class,0);
47299 		}
47300 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47301 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
47302 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
47303 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
47304 		public TerminalNode COMMA_(int i) {
47305 			return getToken(SQLServerStatementParser.COMMA_, i);
47306 		}
47307 		public CreateUserLoginWindowsPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
47308 			super(parent, invokingState);
47309 		}
47310 		@Override public int getRuleIndex() { return RULE_createUserLoginWindowsPrincipalClause; }
47311 		@Override
47312 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47313 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserLoginWindowsPrincipalClause(this);
47314 			else return visitor.visitChildren(this);
47315 		}
47316 	}
47317 
47318 	public final CreateUserLoginWindowsPrincipalClauseContext createUserLoginWindowsPrincipalClause() throws RecognitionException {
47319 		CreateUserLoginWindowsPrincipalClauseContext _localctx = new CreateUserLoginWindowsPrincipalClauseContext(_ctx, getState());
47320 		enterRule(_localctx, 902, RULE_createUserLoginWindowsPrincipalClause);
47321 		int _la;
47322 		try {
47323 			enterOuterAlt(_localctx, 1);
47324 			{
47325 			setState(6623);
47326 			_errHandler.sync(this);
47327 			switch ( getInterpreter().adaptivePredict(_input,761,_ctx) ) {
47328 			case 1:
47329 				{
47330 				{
47331 				setState(6612);
47332 				windowsPrincipal();
47333 				setState(6616);
47334 				_errHandler.sync(this);
47335 				_la = _input.LA(1);
47336 				if (_la==FROM || _la==FOR) {
47337 					{
47338 					setState(6613);
47339 					_la = _input.LA(1);
47340 					if ( !(_la==FROM || _la==FOR) ) {
47341 					_errHandler.recoverInline(this);
47342 					}
47343 					else {
47344 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47345 						_errHandler.reportMatch(this);
47346 						consume();
47347 					}
47348 					setState(6614);
47349 					match(LOGIN);
47350 					setState(6615);
47351 					windowsPrincipal();
47352 					}
47353 				}
47354 
47355 				}
47356 				}
47357 				break;
47358 			case 2:
47359 				{
47360 				{
47361 				setState(6618);
47362 				userName();
47363 				setState(6619);
47364 				_la = _input.LA(1);
47365 				if ( !(_la==FROM || _la==FOR) ) {
47366 				_errHandler.recoverInline(this);
47367 				}
47368 				else {
47369 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47370 					_errHandler.reportMatch(this);
47371 					consume();
47372 				}
47373 				setState(6620);
47374 				match(LOGIN);
47375 				setState(6621);
47376 				windowsPrincipal();
47377 				}
47378 				}
47379 				break;
47380 			}
47381 			setState(6634);
47382 			_errHandler.sync(this);
47383 			_la = _input.LA(1);
47384 			if (_la==WITH) {
47385 				{
47386 				setState(6625);
47387 				match(WITH);
47388 				setState(6626);
47389 				limitedOptionsList();
47390 				setState(6631);
47391 				_errHandler.sync(this);
47392 				_la = _input.LA(1);
47393 				while (_la==COMMA_) {
47394 					{
47395 					{
47396 					setState(6627);
47397 					match(COMMA_);
47398 					setState(6628);
47399 					limitedOptionsList();
47400 					}
47401 					}
47402 					setState(6633);
47403 					_errHandler.sync(this);
47404 					_la = _input.LA(1);
47405 				}
47406 				}
47407 			}
47408 
47409 			}
47410 		}
47411 		catch (RecognitionException re) {
47412 			_localctx.exception = re;
47413 			_errHandler.reportError(this, re);
47414 			_errHandler.recover(this, re);
47415 		}
47416 		finally {
47417 			exitRule();
47418 		}
47419 		return _localctx;
47420 	}
47421 
47422 	public static class CreateUserWithoutLoginClauseContext extends ParserRuleContext {
47423 		public UserNameContext userName() {
47424 			return getRuleContext(UserNameContext.class,0);
47425 		}
47426 		public TerminalNode WITHOUT() { return getToken(SQLServerStatementParser.WITHOUT, 0); }
47427 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47428 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
47429 		public IdentifierContext identifier() {
47430 			return getRuleContext(IdentifierContext.class,0);
47431 		}
47432 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
47433 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
47434 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
47435 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
47436 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47437 		public List<LimitedOptionsListContext> limitedOptionsList() {
47438 			return getRuleContexts(LimitedOptionsListContext.class);
47439 		}
47440 		public LimitedOptionsListContext limitedOptionsList(int i) {
47441 			return getRuleContext(LimitedOptionsListContext.class,i);
47442 		}
47443 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
47444 		public TerminalNode COMMA_(int i) {
47445 			return getToken(SQLServerStatementParser.COMMA_, i);
47446 		}
47447 		public CreateUserWithoutLoginClauseContext(ParserRuleContext parent, int invokingState) {
47448 			super(parent, invokingState);
47449 		}
47450 		@Override public int getRuleIndex() { return RULE_createUserWithoutLoginClause; }
47451 		@Override
47452 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47453 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithoutLoginClause(this);
47454 			else return visitor.visitChildren(this);
47455 		}
47456 	}
47457 
47458 	public final CreateUserWithoutLoginClauseContext createUserWithoutLoginClause() throws RecognitionException {
47459 		CreateUserWithoutLoginClauseContext _localctx = new CreateUserWithoutLoginClauseContext(_ctx, getState());
47460 		enterRule(_localctx, 904, RULE_createUserWithoutLoginClause);
47461 		int _la;
47462 		try {
47463 			enterOuterAlt(_localctx, 1);
47464 			{
47465 			setState(6636);
47466 			userName();
47467 			setState(6657);
47468 			_errHandler.sync(this);
47469 			switch ( getInterpreter().adaptivePredict(_input,766,_ctx) ) {
47470 			case 1:
47471 				{
47472 				setState(6637);
47473 				match(WITHOUT);
47474 				setState(6638);
47475 				match(LOGIN);
47476 				setState(6648);
47477 				_errHandler.sync(this);
47478 				_la = _input.LA(1);
47479 				if (_la==WITH) {
47480 					{
47481 					setState(6639);
47482 					match(WITH);
47483 					setState(6640);
47484 					limitedOptionsList();
47485 					setState(6645);
47486 					_errHandler.sync(this);
47487 					_la = _input.LA(1);
47488 					while (_la==COMMA_) {
47489 						{
47490 						{
47491 						setState(6641);
47492 						match(COMMA_);
47493 						setState(6642);
47494 						limitedOptionsList();
47495 						}
47496 						}
47497 						setState(6647);
47498 						_errHandler.sync(this);
47499 						_la = _input.LA(1);
47500 					}
47501 					}
47502 				}
47503 
47504 				}
47505 				break;
47506 			case 2:
47507 				{
47508 				setState(6650);
47509 				_la = _input.LA(1);
47510 				if ( !(_la==FROM || _la==FOR) ) {
47511 				_errHandler.recoverInline(this);
47512 				}
47513 				else {
47514 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47515 					_errHandler.reportMatch(this);
47516 					consume();
47517 				}
47518 				setState(6651);
47519 				match(CERTIFICATE);
47520 				setState(6652);
47521 				identifier();
47522 				}
47523 				break;
47524 			case 3:
47525 				{
47526 				setState(6653);
47527 				_la = _input.LA(1);
47528 				if ( !(_la==FROM || _la==FOR) ) {
47529 				_errHandler.recoverInline(this);
47530 				}
47531 				else {
47532 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47533 					_errHandler.reportMatch(this);
47534 					consume();
47535 				}
47536 				setState(6654);
47537 				match(ASYMMETRIC);
47538 				setState(6655);
47539 				match(KEY);
47540 				setState(6656);
47541 				identifier();
47542 				}
47543 				break;
47544 			}
47545 			}
47546 		}
47547 		catch (RecognitionException re) {
47548 			_localctx.exception = re;
47549 			_errHandler.reportError(this, re);
47550 			_errHandler.recover(this, re);
47551 		}
47552 		finally {
47553 			exitRule();
47554 		}
47555 		return _localctx;
47556 	}
47557 
47558 	public static class OptionsListContext extends ParserRuleContext {
47559 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
47560 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
47561 		public SchemaNameContext schemaName() {
47562 			return getRuleContext(SchemaNameContext.class,0);
47563 		}
47564 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
47565 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
47566 		public IdentifierContext identifier() {
47567 			return getRuleContext(IdentifierContext.class,0);
47568 		}
47569 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
47570 		public SidContext sid() {
47571 			return getRuleContext(SidContext.class,0);
47572 		}
47573 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
47574 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
47575 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
47576 		public OptionsListContext(ParserRuleContext parent, int invokingState) {
47577 			super(parent, invokingState);
47578 		}
47579 		@Override public int getRuleIndex() { return RULE_optionsList; }
47580 		@Override
47581 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47582 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionsList(this);
47583 			else return visitor.visitChildren(this);
47584 		}
47585 	}
47586 
47587 	public final OptionsListContext optionsList() throws RecognitionException {
47588 		OptionsListContext _localctx = new OptionsListContext(_ctx, getState());
47589 		enterRule(_localctx, 906, RULE_optionsList);
47590 		int _la;
47591 		try {
47592 			setState(6676);
47593 			_errHandler.sync(this);
47594 			switch (_input.LA(1)) {
47595 			case DEFAULT_SCHEMA:
47596 				enterOuterAlt(_localctx, 1);
47597 				{
47598 				setState(6659);
47599 				match(DEFAULT_SCHEMA);
47600 				setState(6660);
47601 				match(EQ_);
47602 				setState(6661);
47603 				schemaName();
47604 				}
47605 				break;
47606 			case DEFAULT_LANGUAGE:
47607 				enterOuterAlt(_localctx, 2);
47608 				{
47609 				setState(6662);
47610 				match(DEFAULT_LANGUAGE);
47611 				setState(6663);
47612 				match(EQ_);
47613 				setState(6666);
47614 				_errHandler.sync(this);
47615 				switch (_input.LA(1)) {
47616 				case NONE:
47617 					{
47618 					setState(6664);
47619 					match(NONE);
47620 					}
47621 					break;
47622 				case TRUNCATE:
47623 				case SCHEMA:
47624 				case COLUMNS:
47625 				case PRECISION:
47626 				case FUNCTION:
47627 				case TRIGGER:
47628 				case CAST:
47629 				case SUBSTRING:
47630 				case OFF:
47631 				case GROUP:
47632 				case LIMIT:
47633 				case OFFSET:
47634 				case SAVEPOINT:
47635 				case BOOLEAN:
47636 				case ARRAY:
47637 				case DATE:
47638 				case LOCALTIME:
47639 				case LOCALTIMESTAMP:
47640 				case QUARTER:
47641 				case MONTH:
47642 				case WEEK:
47643 				case DAY:
47644 				case SECOND:
47645 				case MICROSECOND:
47646 				case MAX:
47647 				case MIN:
47648 				case SUM:
47649 				case COUNT:
47650 				case AVG:
47651 				case ENABLE:
47652 				case DISABLE:
47653 				case INSTANCE:
47654 				case DO:
47655 				case DEFINER:
47656 				case SQL:
47657 				case CASCADED:
47658 				case LOCAL:
47659 				case NEXT:
47660 				case NAME:
47661 				case INTEGER:
47662 				case TYPE:
47663 				case TEXT:
47664 				case VIEWS:
47665 				case READ_ONLY:
47666 				case DATABASE:
47667 				case RETURNS:
47668 				case DATEPART:
47669 				case PASSWORD:
47670 				case BINARY:
47671 				case HIDDEN_:
47672 				case MOD:
47673 				case PARTITION:
47674 				case PARTITIONS:
47675 				case TOP:
47676 				case ROW:
47677 				case ROWS:
47678 				case XOR:
47679 				case ALWAYS:
47680 				case ROLE:
47681 				case START:
47682 				case ALGORITHM:
47683 				case AUTO:
47684 				case BLOCKERS:
47685 				case CLUSTERED:
47686 				case NONCLUSTERED:
47687 				case COLUMNSTORE:
47688 				case CONTENT:
47689 				case YEARS:
47690 				case MONTHS:
47691 				case WEEKS:
47692 				case DAYS:
47693 				case MINUTES:
47694 				case DENY:
47695 				case DETERMINISTIC:
47696 				case DISTRIBUTION:
47697 				case DOCUMENT:
47698 				case DURABILITY:
47699 				case ENCRYPTED:
47700 				case FILESTREAM:
47701 				case FILETABLE:
47702 				case FILLFACTOR:
47703 				case FOLLOWING:
47704 				case HASH:
47705 				case HEAP:
47706 				case INBOUND:
47707 				case OUTBOUND:
47708 				case UNBOUNDED:
47709 				case INFINITE:
47710 				case LOGIN:
47711 				case MASKED:
47712 				case MAXDOP:
47713 				case MOVE:
47714 				case NOCHECK:
47715 				case OBJECT:
47716 				case ONLINE:
47717 				case OVER:
47718 				case PAGE:
47719 				case PAUSED:
47720 				case PERIOD:
47721 				case PERSISTED:
47722 				case PRECEDING:
47723 				case RANDOMIZED:
47724 				case RANGE:
47725 				case REBUILD:
47726 				case REPLICATE:
47727 				case REPLICATION:
47728 				case RESUMABLE:
47729 				case ROWGUIDCOL:
47730 				case SAVE:
47731 				case SELF:
47732 				case SPARSE:
47733 				case SWITCH:
47734 				case TRAN:
47735 				case TRANCOUNT:
47736 				case CONTROL:
47737 				case CONCAT:
47738 				case TAKE:
47739 				case OWNERSHIP:
47740 				case DEFINITION:
47741 				case APPLICATION:
47742 				case ASSEMBLY:
47743 				case SYMMETRIC:
47744 				case ASYMMETRIC:
47745 				case SERVER:
47746 				case RECEIVE:
47747 				case CHANGE:
47748 				case TRACE:
47749 				case TRACKING:
47750 				case RESOURCES:
47751 				case SETTINGS:
47752 				case STATE:
47753 				case AVAILABILITY:
47754 				case CREDENTIAL:
47755 				case ENDPOINT:
47756 				case EVENT:
47757 				case NOTIFICATION:
47758 				case LINKED:
47759 				case AUDIT:
47760 				case DDL:
47761 				case XML:
47762 				case IMPERSONATE:
47763 				case SECURABLES:
47764 				case AUTHENTICATE:
47765 				case EXTERNAL:
47766 				case ACCESS:
47767 				case ADMINISTER:
47768 				case BULK:
47769 				case OPERATIONS:
47770 				case UNSAFE:
47771 				case SHUTDOWN:
47772 				case SCOPED:
47773 				case CONFIGURATION:
47774 				case DATASPACE:
47775 				case SERVICE:
47776 				case CERTIFICATE:
47777 				case CONTRACT:
47778 				case ENCRYPTION:
47779 				case MASTER:
47780 				case DATA:
47781 				case SOURCE:
47782 				case FILE:
47783 				case FORMAT:
47784 				case LIBRARY:
47785 				case FULLTEXT:
47786 				case MASK:
47787 				case UNMASK:
47788 				case MESSAGE:
47789 				case REMOTE:
47790 				case BINDING:
47791 				case ROUTE:
47792 				case SECURITY:
47793 				case POLICY:
47794 				case AGGREGATE:
47795 				case QUEUE:
47796 				case RULE:
47797 				case SYNONYM:
47798 				case COLLECTION:
47799 				case SCRIPT:
47800 				case KILL:
47801 				case BACKUP:
47802 				case LOG:
47803 				case SHOWPLAN:
47804 				case SUBSCRIBE:
47805 				case QUERY:
47806 				case NOTIFICATIONS:
47807 				case CHECKPOINT:
47808 				case SEQUENCE:
47809 				case ABORT_AFTER_WAIT:
47810 				case ALLOW_PAGE_LOCKS:
47811 				case ALLOW_ROW_LOCKS:
47812 				case ALL_SPARSE_COLUMNS:
47813 				case BUCKET_COUNT:
47814 				case COLUMNSTORE_ARCHIVE:
47815 				case COLUMN_ENCRYPTION_KEY:
47816 				case COLUMN_SET:
47817 				case COMPRESSION_DELAY:
47818 				case DATABASE_DEAULT:
47819 				case DATA_COMPRESSION:
47820 				case DATA_CONSISTENCY_CHECK:
47821 				case ENCRYPTION_TYPE:
47822 				case SYSTEM_TIME:
47823 				case SYSTEM_VERSIONING:
47824 				case TEXTIMAGE_ON:
47825 				case WAIT_AT_LOW_PRIORITY:
47826 				case STATISTICS_INCREMENTAL:
47827 				case STATISTICS_NORECOMPUTE:
47828 				case ROUND_ROBIN:
47829 				case SCHEMA_AND_DATA:
47830 				case SCHEMA_ONLY:
47831 				case SORT_IN_TEMPDB:
47832 				case IGNORE_DUP_KEY:
47833 				case IMPLICIT_TRANSACTIONS:
47834 				case MAX_DURATION:
47835 				case MEMORY_OPTIMIZED:
47836 				case MIGRATION_STATE:
47837 				case PAD_INDEX:
47838 				case REMOTE_DATA_ARCHIVE:
47839 				case FILESTREAM_ON:
47840 				case FILETABLE_COLLATE_FILENAME:
47841 				case FILETABLE_DIRECTORY:
47842 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
47843 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
47844 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
47845 				case FILTER_PREDICATE:
47846 				case HISTORY_RETENTION_PERIOD:
47847 				case HISTORY_TABLE:
47848 				case LOCK_ESCALATION:
47849 				case DROP_EXISTING:
47850 				case ROW_NUMBER:
47851 				case FIRST:
47852 				case DATETIME2:
47853 				case OUTPUT:
47854 				case INSERTED:
47855 				case DELETED:
47856 				case FILENAME:
47857 				case SIZE:
47858 				case MAXSIZE:
47859 				case FILEGROWTH:
47860 				case UNLIMITED:
47861 				case KB:
47862 				case MB:
47863 				case GB:
47864 				case TB:
47865 				case CONTAINS:
47866 				case MEMORY_OPTIMIZED_DATA:
47867 				case FILEGROUP:
47868 				case NON_TRANSACTED_ACCESS:
47869 				case DB_CHAINING:
47870 				case TRUSTWORTHY:
47871 				case FORWARD_ONLY:
47872 				case KEYSET:
47873 				case FAST_FORWARD:
47874 				case SCROLL_LOCKS:
47875 				case OPTIMISTIC:
47876 				case TYPE_WARNING:
47877 				case SCHEMABINDING:
47878 				case CALLER:
47879 				case OWNER:
47880 				case SNAPSHOT:
47881 				case REPEATABLE:
47882 				case SERIALIZABLE:
47883 				case NATIVE_COMPILATION:
47884 				case VIEW_METADATA:
47885 				case INSTEAD:
47886 				case APPEND:
47887 				case INCREMENT:
47888 				case CACHE:
47889 				case MINVALUE:
47890 				case MAXVALUE:
47891 				case RESTART:
47892 				case LOB_COMPACTION:
47893 				case COMPRESS_ALL_ROW_GROUPS:
47894 				case REORGANIZE:
47895 				case RESUME:
47896 				case PAUSE:
47897 				case ABORT:
47898 				case ACCELERATED_DATABASE_RECOVERY:
47899 				case PERSISTENT_VERSION_STORE_FILEGROUP:
47900 				case IMMEDIATE:
47901 				case NO_WAIT:
47902 				case TARGET_RECOVERY_TIME:
47903 				case SECONDS:
47904 				case HONOR_BROKER_PRIORITY:
47905 				case ERROR_BROKER_CONVERSATIONS:
47906 				case NEW_BROKER:
47907 				case DISABLE_BROKER:
47908 				case ENABLE_BROKER:
47909 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
47910 				case READ_COMMITTED_SNAPSHOT:
47911 				case ALLOW_SNAPSHOT_ISOLATION:
47912 				case RECURSIVE_TRIGGERS:
47913 				case QUOTED_IDENTIFIER:
47914 				case NUMERIC_ROUNDABORT:
47915 				case CONCAT_NULL_YIELDS_NULL:
47916 				case COMPATIBILITY_LEVEL:
47917 				case ARITHABORT:
47918 				case ANSI_WARNINGS:
47919 				case ANSI_PADDING:
47920 				case ANSI_NULLS:
47921 				case ANSI_NULL_DEFAULT:
47922 				case PAGE_VERIFY:
47923 				case CHECKSUM:
47924 				case TORN_PAGE_DETECTION:
47925 				case BULK_LOGGED:
47926 				case RECOVERY:
47927 				case TOTAL_EXECUTION_CPU_TIME_MS:
47928 				case TOTAL_COMPILE_CPU_TIME_MS:
47929 				case STALE_CAPTURE_POLICY_THRESHOLD:
47930 				case EXECUTION_COUNT:
47931 				case QUERY_CAPTURE_POLICY:
47932 				case WAIT_STATS_CAPTURE_MODE:
47933 				case MAX_PLANS_PER_QUERY:
47934 				case QUERY_CAPTURE_MODE:
47935 				case SIZE_BASED_CLEANUP_MODE:
47936 				case INTERVAL_LENGTH_MINUTES:
47937 				case MAX_STORAGE_SIZE_MB:
47938 				case DATA_FLUSH_INTERVAL_SECONDS:
47939 				case CLEANUP_POLICY:
47940 				case CUSTOM:
47941 				case STALE_QUERY_THRESHOLD_DAYS:
47942 				case OPERATION_MODE:
47943 				case QUERY_STORE:
47944 				case CURSOR_DEFAULT:
47945 				case GLOBAL:
47946 				case CURSOR_CLOSE_ON_COMMIT:
47947 				case HOURS:
47948 				case CHANGE_RETENTION:
47949 				case AUTO_CLEANUP:
47950 				case CHANGE_TRACKING:
47951 				case AUTOMATIC_TUNING:
47952 				case FORCE_LAST_GOOD_PLAN:
47953 				case AUTO_UPDATE_STATISTICS_ASYNC:
47954 				case AUTO_UPDATE_STATISTICS:
47955 				case AUTO_SHRINK:
47956 				case AUTO_CREATE_STATISTICS:
47957 				case INCREMENTAL:
47958 				case AUTO_CLOSE:
47959 				case DATA_RETENTION:
47960 				case TEMPORAL_HISTORY_RETENTION:
47961 				case EDITION:
47962 				case MIXED_PAGE_ALLOCATION:
47963 				case DISABLED:
47964 				case ALLOWED:
47965 				case HADR:
47966 				case MULTI_USER:
47967 				case RESTRICTED_USER:
47968 				case SINGLE_USER:
47969 				case OFFLINE:
47970 				case EMERGENCY:
47971 				case SUSPEND:
47972 				case DATE_CORRELATION_OPTIMIZATION:
47973 				case ELASTIC_POOL:
47974 				case SERVICE_OBJECTIVE:
47975 				case DATABASE_NAME:
47976 				case ALLOW_CONNECTIONS:
47977 				case GEO:
47978 				case NAMED:
47979 				case DATEFIRST:
47980 				case BACKUP_STORAGE_REDUNDANCY:
47981 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
47982 				case SECONDARY:
47983 				case FAILOVER:
47984 				case DEFAULT_FULLTEXT_LANGUAGE:
47985 				case DEFAULT_LANGUAGE:
47986 				case INLINE:
47987 				case NESTED_TRIGGERS:
47988 				case TRANSFORM_NOISE_WORDS:
47989 				case TWO_DIGIT_YEAR_CUTOFF:
47990 				case PERSISTENT_LOG_BUFFER:
47991 				case DIRECTORY_NAME:
47992 				case DATEFORMAT:
47993 				case DELAYED_DURABILITY:
47994 				case AUTHORIZATION:
47995 				case TRANSFER:
47996 				case PROVIDER:
47997 				case SEARCH:
47998 				case MEMBER:
47999 				case IDENTIFIER_:
48000 				case DELIMITED_IDENTIFIER_:
48001 					{
48002 					setState(6665);
48003 					identifier();
48004 					}
48005 					break;
48006 				default:
48007 					throw new NoViableAltException(this);
48008 				}
48009 				}
48010 				break;
48011 			case SID:
48012 				enterOuterAlt(_localctx, 3);
48013 				{
48014 				setState(6668);
48015 				match(SID);
48016 				setState(6669);
48017 				match(EQ_);
48018 				setState(6670);
48019 				sid();
48020 				}
48021 				break;
48022 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
48023 				enterOuterAlt(_localctx, 4);
48024 				{
48025 				setState(6671);
48026 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
48027 				setState(6672);
48028 				match(EQ_);
48029 				setState(6674);
48030 				_errHandler.sync(this);
48031 				_la = _input.LA(1);
48032 				if (_la==ON || _la==OFF) {
48033 					{
48034 					setState(6673);
48035 					_la = _input.LA(1);
48036 					if ( !(_la==ON || _la==OFF) ) {
48037 					_errHandler.recoverInline(this);
48038 					}
48039 					else {
48040 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48041 						_errHandler.reportMatch(this);
48042 						consume();
48043 					}
48044 					}
48045 				}
48046 
48047 				}
48048 				break;
48049 			default:
48050 				throw new NoViableAltException(this);
48051 			}
48052 		}
48053 		catch (RecognitionException re) {
48054 			_localctx.exception = re;
48055 			_errHandler.reportError(this, re);
48056 			_errHandler.recover(this, re);
48057 		}
48058 		finally {
48059 			exitRule();
48060 		}
48061 		return _localctx;
48062 	}
48063 
48064 	public static class LimitedOptionsListContext extends ParserRuleContext {
48065 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
48066 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
48067 		public SchemaNameContext schemaName() {
48068 			return getRuleContext(SchemaNameContext.class,0);
48069 		}
48070 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
48071 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
48072 		public IdentifierContext identifier() {
48073 			return getRuleContext(IdentifierContext.class,0);
48074 		}
48075 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
48076 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
48077 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
48078 		public LimitedOptionsListContext(ParserRuleContext parent, int invokingState) {
48079 			super(parent, invokingState);
48080 		}
48081 		@Override public int getRuleIndex() { return RULE_limitedOptionsList; }
48082 		@Override
48083 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48084 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLimitedOptionsList(this);
48085 			else return visitor.visitChildren(this);
48086 		}
48087 	}
48088 
48089 	public final LimitedOptionsListContext limitedOptionsList() throws RecognitionException {
48090 		LimitedOptionsListContext _localctx = new LimitedOptionsListContext(_ctx, getState());
48091 		enterRule(_localctx, 908, RULE_limitedOptionsList);
48092 		int _la;
48093 		try {
48094 			setState(6692);
48095 			_errHandler.sync(this);
48096 			switch (_input.LA(1)) {
48097 			case DEFAULT_SCHEMA:
48098 				enterOuterAlt(_localctx, 1);
48099 				{
48100 				setState(6678);
48101 				match(DEFAULT_SCHEMA);
48102 				setState(6679);
48103 				match(EQ_);
48104 				setState(6680);
48105 				schemaName();
48106 				}
48107 				break;
48108 			case DEFAULT_LANGUAGE:
48109 				enterOuterAlt(_localctx, 2);
48110 				{
48111 				setState(6681);
48112 				match(DEFAULT_LANGUAGE);
48113 				setState(6682);
48114 				match(EQ_);
48115 				setState(6685);
48116 				_errHandler.sync(this);
48117 				switch (_input.LA(1)) {
48118 				case NONE:
48119 					{
48120 					setState(6683);
48121 					match(NONE);
48122 					}
48123 					break;
48124 				case TRUNCATE:
48125 				case SCHEMA:
48126 				case COLUMNS:
48127 				case PRECISION:
48128 				case FUNCTION:
48129 				case TRIGGER:
48130 				case CAST:
48131 				case SUBSTRING:
48132 				case OFF:
48133 				case GROUP:
48134 				case LIMIT:
48135 				case OFFSET:
48136 				case SAVEPOINT:
48137 				case BOOLEAN:
48138 				case ARRAY:
48139 				case DATE:
48140 				case LOCALTIME:
48141 				case LOCALTIMESTAMP:
48142 				case QUARTER:
48143 				case MONTH:
48144 				case WEEK:
48145 				case DAY:
48146 				case SECOND:
48147 				case MICROSECOND:
48148 				case MAX:
48149 				case MIN:
48150 				case SUM:
48151 				case COUNT:
48152 				case AVG:
48153 				case ENABLE:
48154 				case DISABLE:
48155 				case INSTANCE:
48156 				case DO:
48157 				case DEFINER:
48158 				case SQL:
48159 				case CASCADED:
48160 				case LOCAL:
48161 				case NEXT:
48162 				case NAME:
48163 				case INTEGER:
48164 				case TYPE:
48165 				case TEXT:
48166 				case VIEWS:
48167 				case READ_ONLY:
48168 				case DATABASE:
48169 				case RETURNS:
48170 				case DATEPART:
48171 				case PASSWORD:
48172 				case BINARY:
48173 				case HIDDEN_:
48174 				case MOD:
48175 				case PARTITION:
48176 				case PARTITIONS:
48177 				case TOP:
48178 				case ROW:
48179 				case ROWS:
48180 				case XOR:
48181 				case ALWAYS:
48182 				case ROLE:
48183 				case START:
48184 				case ALGORITHM:
48185 				case AUTO:
48186 				case BLOCKERS:
48187 				case CLUSTERED:
48188 				case NONCLUSTERED:
48189 				case COLUMNSTORE:
48190 				case CONTENT:
48191 				case YEARS:
48192 				case MONTHS:
48193 				case WEEKS:
48194 				case DAYS:
48195 				case MINUTES:
48196 				case DENY:
48197 				case DETERMINISTIC:
48198 				case DISTRIBUTION:
48199 				case DOCUMENT:
48200 				case DURABILITY:
48201 				case ENCRYPTED:
48202 				case FILESTREAM:
48203 				case FILETABLE:
48204 				case FILLFACTOR:
48205 				case FOLLOWING:
48206 				case HASH:
48207 				case HEAP:
48208 				case INBOUND:
48209 				case OUTBOUND:
48210 				case UNBOUNDED:
48211 				case INFINITE:
48212 				case LOGIN:
48213 				case MASKED:
48214 				case MAXDOP:
48215 				case MOVE:
48216 				case NOCHECK:
48217 				case OBJECT:
48218 				case ONLINE:
48219 				case OVER:
48220 				case PAGE:
48221 				case PAUSED:
48222 				case PERIOD:
48223 				case PERSISTED:
48224 				case PRECEDING:
48225 				case RANDOMIZED:
48226 				case RANGE:
48227 				case REBUILD:
48228 				case REPLICATE:
48229 				case REPLICATION:
48230 				case RESUMABLE:
48231 				case ROWGUIDCOL:
48232 				case SAVE:
48233 				case SELF:
48234 				case SPARSE:
48235 				case SWITCH:
48236 				case TRAN:
48237 				case TRANCOUNT:
48238 				case CONTROL:
48239 				case CONCAT:
48240 				case TAKE:
48241 				case OWNERSHIP:
48242 				case DEFINITION:
48243 				case APPLICATION:
48244 				case ASSEMBLY:
48245 				case SYMMETRIC:
48246 				case ASYMMETRIC:
48247 				case SERVER:
48248 				case RECEIVE:
48249 				case CHANGE:
48250 				case TRACE:
48251 				case TRACKING:
48252 				case RESOURCES:
48253 				case SETTINGS:
48254 				case STATE:
48255 				case AVAILABILITY:
48256 				case CREDENTIAL:
48257 				case ENDPOINT:
48258 				case EVENT:
48259 				case NOTIFICATION:
48260 				case LINKED:
48261 				case AUDIT:
48262 				case DDL:
48263 				case XML:
48264 				case IMPERSONATE:
48265 				case SECURABLES:
48266 				case AUTHENTICATE:
48267 				case EXTERNAL:
48268 				case ACCESS:
48269 				case ADMINISTER:
48270 				case BULK:
48271 				case OPERATIONS:
48272 				case UNSAFE:
48273 				case SHUTDOWN:
48274 				case SCOPED:
48275 				case CONFIGURATION:
48276 				case DATASPACE:
48277 				case SERVICE:
48278 				case CERTIFICATE:
48279 				case CONTRACT:
48280 				case ENCRYPTION:
48281 				case MASTER:
48282 				case DATA:
48283 				case SOURCE:
48284 				case FILE:
48285 				case FORMAT:
48286 				case LIBRARY:
48287 				case FULLTEXT:
48288 				case MASK:
48289 				case UNMASK:
48290 				case MESSAGE:
48291 				case REMOTE:
48292 				case BINDING:
48293 				case ROUTE:
48294 				case SECURITY:
48295 				case POLICY:
48296 				case AGGREGATE:
48297 				case QUEUE:
48298 				case RULE:
48299 				case SYNONYM:
48300 				case COLLECTION:
48301 				case SCRIPT:
48302 				case KILL:
48303 				case BACKUP:
48304 				case LOG:
48305 				case SHOWPLAN:
48306 				case SUBSCRIBE:
48307 				case QUERY:
48308 				case NOTIFICATIONS:
48309 				case CHECKPOINT:
48310 				case SEQUENCE:
48311 				case ABORT_AFTER_WAIT:
48312 				case ALLOW_PAGE_LOCKS:
48313 				case ALLOW_ROW_LOCKS:
48314 				case ALL_SPARSE_COLUMNS:
48315 				case BUCKET_COUNT:
48316 				case COLUMNSTORE_ARCHIVE:
48317 				case COLUMN_ENCRYPTION_KEY:
48318 				case COLUMN_SET:
48319 				case COMPRESSION_DELAY:
48320 				case DATABASE_DEAULT:
48321 				case DATA_COMPRESSION:
48322 				case DATA_CONSISTENCY_CHECK:
48323 				case ENCRYPTION_TYPE:
48324 				case SYSTEM_TIME:
48325 				case SYSTEM_VERSIONING:
48326 				case TEXTIMAGE_ON:
48327 				case WAIT_AT_LOW_PRIORITY:
48328 				case STATISTICS_INCREMENTAL:
48329 				case STATISTICS_NORECOMPUTE:
48330 				case ROUND_ROBIN:
48331 				case SCHEMA_AND_DATA:
48332 				case SCHEMA_ONLY:
48333 				case SORT_IN_TEMPDB:
48334 				case IGNORE_DUP_KEY:
48335 				case IMPLICIT_TRANSACTIONS:
48336 				case MAX_DURATION:
48337 				case MEMORY_OPTIMIZED:
48338 				case MIGRATION_STATE:
48339 				case PAD_INDEX:
48340 				case REMOTE_DATA_ARCHIVE:
48341 				case FILESTREAM_ON:
48342 				case FILETABLE_COLLATE_FILENAME:
48343 				case FILETABLE_DIRECTORY:
48344 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
48345 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
48346 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
48347 				case FILTER_PREDICATE:
48348 				case HISTORY_RETENTION_PERIOD:
48349 				case HISTORY_TABLE:
48350 				case LOCK_ESCALATION:
48351 				case DROP_EXISTING:
48352 				case ROW_NUMBER:
48353 				case FIRST:
48354 				case DATETIME2:
48355 				case OUTPUT:
48356 				case INSERTED:
48357 				case DELETED:
48358 				case FILENAME:
48359 				case SIZE:
48360 				case MAXSIZE:
48361 				case FILEGROWTH:
48362 				case UNLIMITED:
48363 				case KB:
48364 				case MB:
48365 				case GB:
48366 				case TB:
48367 				case CONTAINS:
48368 				case MEMORY_OPTIMIZED_DATA:
48369 				case FILEGROUP:
48370 				case NON_TRANSACTED_ACCESS:
48371 				case DB_CHAINING:
48372 				case TRUSTWORTHY:
48373 				case FORWARD_ONLY:
48374 				case KEYSET:
48375 				case FAST_FORWARD:
48376 				case SCROLL_LOCKS:
48377 				case OPTIMISTIC:
48378 				case TYPE_WARNING:
48379 				case SCHEMABINDING:
48380 				case CALLER:
48381 				case OWNER:
48382 				case SNAPSHOT:
48383 				case REPEATABLE:
48384 				case SERIALIZABLE:
48385 				case NATIVE_COMPILATION:
48386 				case VIEW_METADATA:
48387 				case INSTEAD:
48388 				case APPEND:
48389 				case INCREMENT:
48390 				case CACHE:
48391 				case MINVALUE:
48392 				case MAXVALUE:
48393 				case RESTART:
48394 				case LOB_COMPACTION:
48395 				case COMPRESS_ALL_ROW_GROUPS:
48396 				case REORGANIZE:
48397 				case RESUME:
48398 				case PAUSE:
48399 				case ABORT:
48400 				case ACCELERATED_DATABASE_RECOVERY:
48401 				case PERSISTENT_VERSION_STORE_FILEGROUP:
48402 				case IMMEDIATE:
48403 				case NO_WAIT:
48404 				case TARGET_RECOVERY_TIME:
48405 				case SECONDS:
48406 				case HONOR_BROKER_PRIORITY:
48407 				case ERROR_BROKER_CONVERSATIONS:
48408 				case NEW_BROKER:
48409 				case DISABLE_BROKER:
48410 				case ENABLE_BROKER:
48411 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
48412 				case READ_COMMITTED_SNAPSHOT:
48413 				case ALLOW_SNAPSHOT_ISOLATION:
48414 				case RECURSIVE_TRIGGERS:
48415 				case QUOTED_IDENTIFIER:
48416 				case NUMERIC_ROUNDABORT:
48417 				case CONCAT_NULL_YIELDS_NULL:
48418 				case COMPATIBILITY_LEVEL:
48419 				case ARITHABORT:
48420 				case ANSI_WARNINGS:
48421 				case ANSI_PADDING:
48422 				case ANSI_NULLS:
48423 				case ANSI_NULL_DEFAULT:
48424 				case PAGE_VERIFY:
48425 				case CHECKSUM:
48426 				case TORN_PAGE_DETECTION:
48427 				case BULK_LOGGED:
48428 				case RECOVERY:
48429 				case TOTAL_EXECUTION_CPU_TIME_MS:
48430 				case TOTAL_COMPILE_CPU_TIME_MS:
48431 				case STALE_CAPTURE_POLICY_THRESHOLD:
48432 				case EXECUTION_COUNT:
48433 				case QUERY_CAPTURE_POLICY:
48434 				case WAIT_STATS_CAPTURE_MODE:
48435 				case MAX_PLANS_PER_QUERY:
48436 				case QUERY_CAPTURE_MODE:
48437 				case SIZE_BASED_CLEANUP_MODE:
48438 				case INTERVAL_LENGTH_MINUTES:
48439 				case MAX_STORAGE_SIZE_MB:
48440 				case DATA_FLUSH_INTERVAL_SECONDS:
48441 				case CLEANUP_POLICY:
48442 				case CUSTOM:
48443 				case STALE_QUERY_THRESHOLD_DAYS:
48444 				case OPERATION_MODE:
48445 				case QUERY_STORE:
48446 				case CURSOR_DEFAULT:
48447 				case GLOBAL:
48448 				case CURSOR_CLOSE_ON_COMMIT:
48449 				case HOURS:
48450 				case CHANGE_RETENTION:
48451 				case AUTO_CLEANUP:
48452 				case CHANGE_TRACKING:
48453 				case AUTOMATIC_TUNING:
48454 				case FORCE_LAST_GOOD_PLAN:
48455 				case AUTO_UPDATE_STATISTICS_ASYNC:
48456 				case AUTO_UPDATE_STATISTICS:
48457 				case AUTO_SHRINK:
48458 				case AUTO_CREATE_STATISTICS:
48459 				case INCREMENTAL:
48460 				case AUTO_CLOSE:
48461 				case DATA_RETENTION:
48462 				case TEMPORAL_HISTORY_RETENTION:
48463 				case EDITION:
48464 				case MIXED_PAGE_ALLOCATION:
48465 				case DISABLED:
48466 				case ALLOWED:
48467 				case HADR:
48468 				case MULTI_USER:
48469 				case RESTRICTED_USER:
48470 				case SINGLE_USER:
48471 				case OFFLINE:
48472 				case EMERGENCY:
48473 				case SUSPEND:
48474 				case DATE_CORRELATION_OPTIMIZATION:
48475 				case ELASTIC_POOL:
48476 				case SERVICE_OBJECTIVE:
48477 				case DATABASE_NAME:
48478 				case ALLOW_CONNECTIONS:
48479 				case GEO:
48480 				case NAMED:
48481 				case DATEFIRST:
48482 				case BACKUP_STORAGE_REDUNDANCY:
48483 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
48484 				case SECONDARY:
48485 				case FAILOVER:
48486 				case DEFAULT_FULLTEXT_LANGUAGE:
48487 				case DEFAULT_LANGUAGE:
48488 				case INLINE:
48489 				case NESTED_TRIGGERS:
48490 				case TRANSFORM_NOISE_WORDS:
48491 				case TWO_DIGIT_YEAR_CUTOFF:
48492 				case PERSISTENT_LOG_BUFFER:
48493 				case DIRECTORY_NAME:
48494 				case DATEFORMAT:
48495 				case DELAYED_DURABILITY:
48496 				case AUTHORIZATION:
48497 				case TRANSFER:
48498 				case PROVIDER:
48499 				case SEARCH:
48500 				case MEMBER:
48501 				case IDENTIFIER_:
48502 				case DELIMITED_IDENTIFIER_:
48503 					{
48504 					setState(6684);
48505 					identifier();
48506 					}
48507 					break;
48508 				default:
48509 					throw new NoViableAltException(this);
48510 				}
48511 				}
48512 				break;
48513 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
48514 				enterOuterAlt(_localctx, 3);
48515 				{
48516 				setState(6687);
48517 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
48518 				setState(6688);
48519 				match(EQ_);
48520 				setState(6690);
48521 				_errHandler.sync(this);
48522 				_la = _input.LA(1);
48523 				if (_la==ON || _la==OFF) {
48524 					{
48525 					setState(6689);
48526 					_la = _input.LA(1);
48527 					if ( !(_la==ON || _la==OFF) ) {
48528 					_errHandler.recoverInline(this);
48529 					}
48530 					else {
48531 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48532 						_errHandler.reportMatch(this);
48533 						consume();
48534 					}
48535 					}
48536 				}
48537 
48538 				}
48539 				break;
48540 			default:
48541 				throw new NoViableAltException(this);
48542 			}
48543 		}
48544 		catch (RecognitionException re) {
48545 			_localctx.exception = re;
48546 			_errHandler.reportError(this, re);
48547 			_errHandler.recover(this, re);
48548 		}
48549 		finally {
48550 			exitRule();
48551 		}
48552 		return _localctx;
48553 	}
48554 
48555 	public static class CreateUserFromExternalProviderClauseContext extends ParserRuleContext {
48556 		public UserNameContext userName() {
48557 			return getRuleContext(UserNameContext.class,0);
48558 		}
48559 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
48560 		public IdentifierContext identifier() {
48561 			return getRuleContext(IdentifierContext.class,0);
48562 		}
48563 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
48564 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48565 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
48566 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
48567 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48568 		public List<LimitedOptionsListContext> limitedOptionsList() {
48569 			return getRuleContexts(LimitedOptionsListContext.class);
48570 		}
48571 		public LimitedOptionsListContext limitedOptionsList(int i) {
48572 			return getRuleContext(LimitedOptionsListContext.class,i);
48573 		}
48574 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
48575 		public TerminalNode COMMA_(int i) {
48576 			return getToken(SQLServerStatementParser.COMMA_, i);
48577 		}
48578 		public CreateUserFromExternalProviderClauseContext(ParserRuleContext parent, int invokingState) {
48579 			super(parent, invokingState);
48580 		}
48581 		@Override public int getRuleIndex() { return RULE_createUserFromExternalProviderClause; }
48582 		@Override
48583 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48584 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserFromExternalProviderClause(this);
48585 			else return visitor.visitChildren(this);
48586 		}
48587 	}
48588 
48589 	public final CreateUserFromExternalProviderClauseContext createUserFromExternalProviderClause() throws RecognitionException {
48590 		CreateUserFromExternalProviderClauseContext _localctx = new CreateUserFromExternalProviderClauseContext(_ctx, getState());
48591 		enterRule(_localctx, 910, RULE_createUserFromExternalProviderClause);
48592 		int _la;
48593 		try {
48594 			setState(6714);
48595 			_errHandler.sync(this);
48596 			switch (_input.LA(1)) {
48597 			case TRUNCATE:
48598 			case SCHEMA:
48599 			case COLUMNS:
48600 			case PRECISION:
48601 			case FUNCTION:
48602 			case TRIGGER:
48603 			case CAST:
48604 			case SUBSTRING:
48605 			case OFF:
48606 			case GROUP:
48607 			case LIMIT:
48608 			case OFFSET:
48609 			case SAVEPOINT:
48610 			case BOOLEAN:
48611 			case ARRAY:
48612 			case DATE:
48613 			case LOCALTIME:
48614 			case LOCALTIMESTAMP:
48615 			case QUARTER:
48616 			case MONTH:
48617 			case WEEK:
48618 			case DAY:
48619 			case SECOND:
48620 			case MICROSECOND:
48621 			case MAX:
48622 			case MIN:
48623 			case SUM:
48624 			case COUNT:
48625 			case AVG:
48626 			case ENABLE:
48627 			case DISABLE:
48628 			case INSTANCE:
48629 			case DO:
48630 			case DEFINER:
48631 			case SQL:
48632 			case CASCADED:
48633 			case LOCAL:
48634 			case NEXT:
48635 			case NAME:
48636 			case INTEGER:
48637 			case TYPE:
48638 			case TEXT:
48639 			case VIEWS:
48640 			case READ_ONLY:
48641 			case DATABASE:
48642 			case RETURNS:
48643 			case DATEPART:
48644 			case PASSWORD:
48645 			case BINARY:
48646 			case HIDDEN_:
48647 			case MOD:
48648 			case PARTITION:
48649 			case PARTITIONS:
48650 			case TOP:
48651 			case ROW:
48652 			case ROWS:
48653 			case XOR:
48654 			case ALWAYS:
48655 			case ROLE:
48656 			case START:
48657 			case ALGORITHM:
48658 			case AUTO:
48659 			case BLOCKERS:
48660 			case CLUSTERED:
48661 			case NONCLUSTERED:
48662 			case COLUMNSTORE:
48663 			case CONTENT:
48664 			case YEARS:
48665 			case MONTHS:
48666 			case WEEKS:
48667 			case DAYS:
48668 			case MINUTES:
48669 			case DENY:
48670 			case DETERMINISTIC:
48671 			case DISTRIBUTION:
48672 			case DOCUMENT:
48673 			case DURABILITY:
48674 			case ENCRYPTED:
48675 			case FILESTREAM:
48676 			case FILETABLE:
48677 			case FILLFACTOR:
48678 			case FOLLOWING:
48679 			case HASH:
48680 			case HEAP:
48681 			case INBOUND:
48682 			case OUTBOUND:
48683 			case UNBOUNDED:
48684 			case INFINITE:
48685 			case LOGIN:
48686 			case MASKED:
48687 			case MAXDOP:
48688 			case MOVE:
48689 			case NOCHECK:
48690 			case OBJECT:
48691 			case ONLINE:
48692 			case OVER:
48693 			case PAGE:
48694 			case PAUSED:
48695 			case PERIOD:
48696 			case PERSISTED:
48697 			case PRECEDING:
48698 			case RANDOMIZED:
48699 			case RANGE:
48700 			case REBUILD:
48701 			case REPLICATE:
48702 			case REPLICATION:
48703 			case RESUMABLE:
48704 			case ROWGUIDCOL:
48705 			case SAVE:
48706 			case SELF:
48707 			case SPARSE:
48708 			case SWITCH:
48709 			case TRAN:
48710 			case TRANCOUNT:
48711 			case CONTROL:
48712 			case CONCAT:
48713 			case TAKE:
48714 			case OWNERSHIP:
48715 			case DEFINITION:
48716 			case APPLICATION:
48717 			case ASSEMBLY:
48718 			case SYMMETRIC:
48719 			case ASYMMETRIC:
48720 			case SERVER:
48721 			case RECEIVE:
48722 			case CHANGE:
48723 			case TRACE:
48724 			case TRACKING:
48725 			case RESOURCES:
48726 			case SETTINGS:
48727 			case STATE:
48728 			case AVAILABILITY:
48729 			case CREDENTIAL:
48730 			case ENDPOINT:
48731 			case EVENT:
48732 			case NOTIFICATION:
48733 			case LINKED:
48734 			case AUDIT:
48735 			case DDL:
48736 			case XML:
48737 			case IMPERSONATE:
48738 			case SECURABLES:
48739 			case AUTHENTICATE:
48740 			case EXTERNAL:
48741 			case ACCESS:
48742 			case ADMINISTER:
48743 			case BULK:
48744 			case OPERATIONS:
48745 			case UNSAFE:
48746 			case SHUTDOWN:
48747 			case SCOPED:
48748 			case CONFIGURATION:
48749 			case DATASPACE:
48750 			case SERVICE:
48751 			case CERTIFICATE:
48752 			case CONTRACT:
48753 			case ENCRYPTION:
48754 			case MASTER:
48755 			case DATA:
48756 			case SOURCE:
48757 			case FILE:
48758 			case FORMAT:
48759 			case LIBRARY:
48760 			case FULLTEXT:
48761 			case MASK:
48762 			case UNMASK:
48763 			case MESSAGE:
48764 			case REMOTE:
48765 			case BINDING:
48766 			case ROUTE:
48767 			case SECURITY:
48768 			case POLICY:
48769 			case AGGREGATE:
48770 			case QUEUE:
48771 			case RULE:
48772 			case SYNONYM:
48773 			case COLLECTION:
48774 			case SCRIPT:
48775 			case KILL:
48776 			case BACKUP:
48777 			case LOG:
48778 			case SHOWPLAN:
48779 			case SUBSCRIBE:
48780 			case QUERY:
48781 			case NOTIFICATIONS:
48782 			case CHECKPOINT:
48783 			case SEQUENCE:
48784 			case ABORT_AFTER_WAIT:
48785 			case ALLOW_PAGE_LOCKS:
48786 			case ALLOW_ROW_LOCKS:
48787 			case ALL_SPARSE_COLUMNS:
48788 			case BUCKET_COUNT:
48789 			case COLUMNSTORE_ARCHIVE:
48790 			case COLUMN_ENCRYPTION_KEY:
48791 			case COLUMN_SET:
48792 			case COMPRESSION_DELAY:
48793 			case DATABASE_DEAULT:
48794 			case DATA_COMPRESSION:
48795 			case DATA_CONSISTENCY_CHECK:
48796 			case ENCRYPTION_TYPE:
48797 			case SYSTEM_TIME:
48798 			case SYSTEM_VERSIONING:
48799 			case TEXTIMAGE_ON:
48800 			case WAIT_AT_LOW_PRIORITY:
48801 			case STATISTICS_INCREMENTAL:
48802 			case STATISTICS_NORECOMPUTE:
48803 			case ROUND_ROBIN:
48804 			case SCHEMA_AND_DATA:
48805 			case SCHEMA_ONLY:
48806 			case SORT_IN_TEMPDB:
48807 			case IGNORE_DUP_KEY:
48808 			case IMPLICIT_TRANSACTIONS:
48809 			case MAX_DURATION:
48810 			case MEMORY_OPTIMIZED:
48811 			case MIGRATION_STATE:
48812 			case PAD_INDEX:
48813 			case REMOTE_DATA_ARCHIVE:
48814 			case FILESTREAM_ON:
48815 			case FILETABLE_COLLATE_FILENAME:
48816 			case FILETABLE_DIRECTORY:
48817 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
48818 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
48819 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
48820 			case FILTER_PREDICATE:
48821 			case HISTORY_RETENTION_PERIOD:
48822 			case HISTORY_TABLE:
48823 			case LOCK_ESCALATION:
48824 			case DROP_EXISTING:
48825 			case ROW_NUMBER:
48826 			case FIRST:
48827 			case DATETIME2:
48828 			case OUTPUT:
48829 			case INSERTED:
48830 			case DELETED:
48831 			case FILENAME:
48832 			case SIZE:
48833 			case MAXSIZE:
48834 			case FILEGROWTH:
48835 			case UNLIMITED:
48836 			case KB:
48837 			case MB:
48838 			case GB:
48839 			case TB:
48840 			case CONTAINS:
48841 			case MEMORY_OPTIMIZED_DATA:
48842 			case FILEGROUP:
48843 			case NON_TRANSACTED_ACCESS:
48844 			case DB_CHAINING:
48845 			case TRUSTWORTHY:
48846 			case FORWARD_ONLY:
48847 			case KEYSET:
48848 			case FAST_FORWARD:
48849 			case SCROLL_LOCKS:
48850 			case OPTIMISTIC:
48851 			case TYPE_WARNING:
48852 			case SCHEMABINDING:
48853 			case CALLER:
48854 			case OWNER:
48855 			case SNAPSHOT:
48856 			case REPEATABLE:
48857 			case SERIALIZABLE:
48858 			case NATIVE_COMPILATION:
48859 			case VIEW_METADATA:
48860 			case INSTEAD:
48861 			case APPEND:
48862 			case INCREMENT:
48863 			case CACHE:
48864 			case MINVALUE:
48865 			case MAXVALUE:
48866 			case RESTART:
48867 			case LOB_COMPACTION:
48868 			case COMPRESS_ALL_ROW_GROUPS:
48869 			case REORGANIZE:
48870 			case RESUME:
48871 			case PAUSE:
48872 			case ABORT:
48873 			case ACCELERATED_DATABASE_RECOVERY:
48874 			case PERSISTENT_VERSION_STORE_FILEGROUP:
48875 			case IMMEDIATE:
48876 			case NO_WAIT:
48877 			case TARGET_RECOVERY_TIME:
48878 			case SECONDS:
48879 			case HONOR_BROKER_PRIORITY:
48880 			case ERROR_BROKER_CONVERSATIONS:
48881 			case NEW_BROKER:
48882 			case DISABLE_BROKER:
48883 			case ENABLE_BROKER:
48884 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
48885 			case READ_COMMITTED_SNAPSHOT:
48886 			case ALLOW_SNAPSHOT_ISOLATION:
48887 			case RECURSIVE_TRIGGERS:
48888 			case QUOTED_IDENTIFIER:
48889 			case NUMERIC_ROUNDABORT:
48890 			case CONCAT_NULL_YIELDS_NULL:
48891 			case COMPATIBILITY_LEVEL:
48892 			case ARITHABORT:
48893 			case ANSI_WARNINGS:
48894 			case ANSI_PADDING:
48895 			case ANSI_NULLS:
48896 			case ANSI_NULL_DEFAULT:
48897 			case PAGE_VERIFY:
48898 			case CHECKSUM:
48899 			case TORN_PAGE_DETECTION:
48900 			case BULK_LOGGED:
48901 			case RECOVERY:
48902 			case TOTAL_EXECUTION_CPU_TIME_MS:
48903 			case TOTAL_COMPILE_CPU_TIME_MS:
48904 			case STALE_CAPTURE_POLICY_THRESHOLD:
48905 			case EXECUTION_COUNT:
48906 			case QUERY_CAPTURE_POLICY:
48907 			case WAIT_STATS_CAPTURE_MODE:
48908 			case MAX_PLANS_PER_QUERY:
48909 			case QUERY_CAPTURE_MODE:
48910 			case SIZE_BASED_CLEANUP_MODE:
48911 			case INTERVAL_LENGTH_MINUTES:
48912 			case MAX_STORAGE_SIZE_MB:
48913 			case DATA_FLUSH_INTERVAL_SECONDS:
48914 			case CLEANUP_POLICY:
48915 			case CUSTOM:
48916 			case STALE_QUERY_THRESHOLD_DAYS:
48917 			case OPERATION_MODE:
48918 			case QUERY_STORE:
48919 			case CURSOR_DEFAULT:
48920 			case GLOBAL:
48921 			case CURSOR_CLOSE_ON_COMMIT:
48922 			case HOURS:
48923 			case CHANGE_RETENTION:
48924 			case AUTO_CLEANUP:
48925 			case CHANGE_TRACKING:
48926 			case AUTOMATIC_TUNING:
48927 			case FORCE_LAST_GOOD_PLAN:
48928 			case AUTO_UPDATE_STATISTICS_ASYNC:
48929 			case AUTO_UPDATE_STATISTICS:
48930 			case AUTO_SHRINK:
48931 			case AUTO_CREATE_STATISTICS:
48932 			case INCREMENTAL:
48933 			case AUTO_CLOSE:
48934 			case DATA_RETENTION:
48935 			case TEMPORAL_HISTORY_RETENTION:
48936 			case EDITION:
48937 			case MIXED_PAGE_ALLOCATION:
48938 			case DISABLED:
48939 			case ALLOWED:
48940 			case HADR:
48941 			case MULTI_USER:
48942 			case RESTRICTED_USER:
48943 			case SINGLE_USER:
48944 			case OFFLINE:
48945 			case EMERGENCY:
48946 			case SUSPEND:
48947 			case DATE_CORRELATION_OPTIMIZATION:
48948 			case ELASTIC_POOL:
48949 			case SERVICE_OBJECTIVE:
48950 			case DATABASE_NAME:
48951 			case ALLOW_CONNECTIONS:
48952 			case GEO:
48953 			case NAMED:
48954 			case DATEFIRST:
48955 			case BACKUP_STORAGE_REDUNDANCY:
48956 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
48957 			case SECONDARY:
48958 			case FAILOVER:
48959 			case DEFAULT_FULLTEXT_LANGUAGE:
48960 			case DEFAULT_LANGUAGE:
48961 			case INLINE:
48962 			case NESTED_TRIGGERS:
48963 			case TRANSFORM_NOISE_WORDS:
48964 			case TWO_DIGIT_YEAR_CUTOFF:
48965 			case PERSISTENT_LOG_BUFFER:
48966 			case DIRECTORY_NAME:
48967 			case DATEFORMAT:
48968 			case DELAYED_DURABILITY:
48969 			case AUTHORIZATION:
48970 			case TRANSFER:
48971 			case PROVIDER:
48972 			case SEARCH:
48973 			case MEMBER:
48974 			case IDENTIFIER_:
48975 			case DELIMITED_IDENTIFIER_:
48976 				enterOuterAlt(_localctx, 1);
48977 				{
48978 				setState(6694);
48979 				userName();
48980 				setState(6698);
48981 				_errHandler.sync(this);
48982 				_la = _input.LA(1);
48983 				if (_la==FROM || _la==FOR) {
48984 					{
48985 					setState(6695);
48986 					_la = _input.LA(1);
48987 					if ( !(_la==FROM || _la==FOR) ) {
48988 					_errHandler.recoverInline(this);
48989 					}
48990 					else {
48991 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48992 						_errHandler.reportMatch(this);
48993 						consume();
48994 					}
48995 					setState(6696);
48996 					match(LOGIN);
48997 					setState(6697);
48998 					identifier();
48999 					}
49000 				}
49001 
49002 				}
49003 				break;
49004 			case FROM:
49005 				enterOuterAlt(_localctx, 2);
49006 				{
49007 				setState(6700);
49008 				match(FROM);
49009 				setState(6701);
49010 				match(EXTERNAL);
49011 				setState(6702);
49012 				match(PROVIDER);
49013 				setState(6712);
49014 				_errHandler.sync(this);
49015 				_la = _input.LA(1);
49016 				if (_la==WITH) {
49017 					{
49018 					setState(6703);
49019 					match(WITH);
49020 					setState(6704);
49021 					limitedOptionsList();
49022 					setState(6709);
49023 					_errHandler.sync(this);
49024 					_la = _input.LA(1);
49025 					while (_la==COMMA_) {
49026 						{
49027 						{
49028 						setState(6705);
49029 						match(COMMA_);
49030 						setState(6706);
49031 						limitedOptionsList();
49032 						}
49033 						}
49034 						setState(6711);
49035 						_errHandler.sync(this);
49036 						_la = _input.LA(1);
49037 					}
49038 					}
49039 				}
49040 
49041 				}
49042 				break;
49043 			default:
49044 				throw new NoViableAltException(this);
49045 			}
49046 		}
49047 		catch (RecognitionException re) {
49048 			_localctx.exception = re;
49049 			_errHandler.reportError(this, re);
49050 			_errHandler.recover(this, re);
49051 		}
49052 		finally {
49053 			exitRule();
49054 		}
49055 		return _localctx;
49056 	}
49057 
49058 	public static class CreateUserWithDefaultSchemaContext extends ParserRuleContext {
49059 		public UserNameContext userName() {
49060 			return getRuleContext(UserNameContext.class,0);
49061 		}
49062 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
49063 		public IdentifierContext identifier() {
49064 			return getRuleContext(IdentifierContext.class,0);
49065 		}
49066 		public TerminalNode WITHOUT() { return getToken(SQLServerStatementParser.WITHOUT, 0); }
49067 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
49068 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
49069 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
49070 		public SchemaNameContext schemaName() {
49071 			return getRuleContext(SchemaNameContext.class,0);
49072 		}
49073 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
49074 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
49075 		public CreateUserWithDefaultSchemaContext(ParserRuleContext parent, int invokingState) {
49076 			super(parent, invokingState);
49077 		}
49078 		@Override public int getRuleIndex() { return RULE_createUserWithDefaultSchema; }
49079 		@Override
49080 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49081 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithDefaultSchema(this);
49082 			else return visitor.visitChildren(this);
49083 		}
49084 	}
49085 
49086 	public final CreateUserWithDefaultSchemaContext createUserWithDefaultSchema() throws RecognitionException {
49087 		CreateUserWithDefaultSchemaContext _localctx = new CreateUserWithDefaultSchemaContext(_ctx, getState());
49088 		enterRule(_localctx, 912, RULE_createUserWithDefaultSchema);
49089 		int _la;
49090 		try {
49091 			enterOuterAlt(_localctx, 1);
49092 			{
49093 			setState(6716);
49094 			userName();
49095 			setState(6722);
49096 			_errHandler.sync(this);
49097 			switch (_input.LA(1)) {
49098 			case FROM:
49099 			case FOR:
49100 				{
49101 				setState(6717);
49102 				_la = _input.LA(1);
49103 				if ( !(_la==FROM || _la==FOR) ) {
49104 				_errHandler.recoverInline(this);
49105 				}
49106 				else {
49107 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
49108 					_errHandler.reportMatch(this);
49109 					consume();
49110 				}
49111 				setState(6718);
49112 				match(LOGIN);
49113 				setState(6719);
49114 				identifier();
49115 				}
49116 				break;
49117 			case WITHOUT:
49118 				{
49119 				setState(6720);
49120 				match(WITHOUT);
49121 				setState(6721);
49122 				match(LOGIN);
49123 				}
49124 				break;
49125 			case EOF:
49126 			case SEMI_:
49127 			case WITH:
49128 				break;
49129 			default:
49130 				break;
49131 			}
49132 			setState(6728);
49133 			_errHandler.sync(this);
49134 			_la = _input.LA(1);
49135 			if (_la==WITH) {
49136 				{
49137 				setState(6724);
49138 				match(WITH);
49139 				setState(6725);
49140 				match(DEFAULT_SCHEMA);
49141 				setState(6726);
49142 				match(EQ_);
49143 				setState(6727);
49144 				schemaName();
49145 				}
49146 			}
49147 
49148 			}
49149 		}
49150 		catch (RecognitionException re) {
49151 			_localctx.exception = re;
49152 			_errHandler.reportError(this, re);
49153 			_errHandler.recover(this, re);
49154 		}
49155 		finally {
49156 			exitRule();
49157 		}
49158 		return _localctx;
49159 	}
49160 
49161 	public static class CreateUserWithAzureActiveDirectoryPrincipalClauseContext extends ParserRuleContext {
49162 		public AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() {
49163 			return getRuleContext(AzureActiveDirectoryPrincipalContext.class,0);
49164 		}
49165 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
49166 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
49167 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
49168 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
49169 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
49170 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
49171 		public SchemaNameContext schemaName() {
49172 			return getRuleContext(SchemaNameContext.class,0);
49173 		}
49174 		public CreateUserWithAzureActiveDirectoryPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
49175 			super(parent, invokingState);
49176 		}
49177 		@Override public int getRuleIndex() { return RULE_createUserWithAzureActiveDirectoryPrincipalClause; }
49178 		@Override
49179 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49180 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithAzureActiveDirectoryPrincipalClause(this);
49181 			else return visitor.visitChildren(this);
49182 		}
49183 	}
49184 
49185 	public final CreateUserWithAzureActiveDirectoryPrincipalClauseContext createUserWithAzureActiveDirectoryPrincipalClause() throws RecognitionException {
49186 		CreateUserWithAzureActiveDirectoryPrincipalClauseContext _localctx = new CreateUserWithAzureActiveDirectoryPrincipalClauseContext(_ctx, getState());
49187 		enterRule(_localctx, 914, RULE_createUserWithAzureActiveDirectoryPrincipalClause);
49188 		int _la;
49189 		try {
49190 			enterOuterAlt(_localctx, 1);
49191 			{
49192 			setState(6730);
49193 			azureActiveDirectoryPrincipal();
49194 			setState(6731);
49195 			match(FROM);
49196 			setState(6732);
49197 			match(EXTERNAL);
49198 			setState(6733);
49199 			match(PROVIDER);
49200 			setState(6738);
49201 			_errHandler.sync(this);
49202 			_la = _input.LA(1);
49203 			if (_la==WITH) {
49204 				{
49205 				setState(6734);
49206 				match(WITH);
49207 				setState(6735);
49208 				match(DEFAULT_SCHEMA);
49209 				setState(6736);
49210 				match(EQ_);
49211 				setState(6737);
49212 				schemaName();
49213 				}
49214 			}
49215 
49216 			}
49217 		}
49218 		catch (RecognitionException re) {
49219 			_localctx.exception = re;
49220 			_errHandler.reportError(this, re);
49221 			_errHandler.recover(this, re);
49222 		}
49223 		finally {
49224 			exitRule();
49225 		}
49226 		return _localctx;
49227 	}
49228 
49229 	public static class WindowsPrincipalContext extends ParserRuleContext {
49230 		public UserNameContext userName() {
49231 			return getRuleContext(UserNameContext.class,0);
49232 		}
49233 		public WindowsPrincipalContext(ParserRuleContext parent, int invokingState) {
49234 			super(parent, invokingState);
49235 		}
49236 		@Override public int getRuleIndex() { return RULE_windowsPrincipal; }
49237 		@Override
49238 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49239 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowsPrincipal(this);
49240 			else return visitor.visitChildren(this);
49241 		}
49242 	}
49243 
49244 	public final WindowsPrincipalContext windowsPrincipal() throws RecognitionException {
49245 		WindowsPrincipalContext _localctx = new WindowsPrincipalContext(_ctx, getState());
49246 		enterRule(_localctx, 916, RULE_windowsPrincipal);
49247 		try {
49248 			enterOuterAlt(_localctx, 1);
49249 			{
49250 			setState(6740);
49251 			userName();
49252 			}
49253 		}
49254 		catch (RecognitionException re) {
49255 			_localctx.exception = re;
49256 			_errHandler.reportError(this, re);
49257 			_errHandler.recover(this, re);
49258 		}
49259 		finally {
49260 			exitRule();
49261 		}
49262 		return _localctx;
49263 	}
49264 
49265 	public static class AzureActiveDirectoryPrincipalContext extends ParserRuleContext {
49266 		public UserNameContext userName() {
49267 			return getRuleContext(UserNameContext.class,0);
49268 		}
49269 		public AzureActiveDirectoryPrincipalContext(ParserRuleContext parent, int invokingState) {
49270 			super(parent, invokingState);
49271 		}
49272 		@Override public int getRuleIndex() { return RULE_azureActiveDirectoryPrincipal; }
49273 		@Override
49274 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49275 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAzureActiveDirectoryPrincipal(this);
49276 			else return visitor.visitChildren(this);
49277 		}
49278 	}
49279 
49280 	public final AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() throws RecognitionException {
49281 		AzureActiveDirectoryPrincipalContext _localctx = new AzureActiveDirectoryPrincipalContext(_ctx, getState());
49282 		enterRule(_localctx, 918, RULE_azureActiveDirectoryPrincipal);
49283 		try {
49284 			enterOuterAlt(_localctx, 1);
49285 			{
49286 			setState(6742);
49287 			userName();
49288 			}
49289 		}
49290 		catch (RecognitionException re) {
49291 			_localctx.exception = re;
49292 			_errHandler.reportError(this, re);
49293 			_errHandler.recover(this, re);
49294 		}
49295 		finally {
49296 			exitRule();
49297 		}
49298 		return _localctx;
49299 	}
49300 
49301 	public static class UserNameContext extends ParserRuleContext {
49302 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
49303 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
49304 		}
49305 		public UserNameContext(ParserRuleContext parent, int invokingState) {
49306 			super(parent, invokingState);
49307 		}
49308 		@Override public int getRuleIndex() { return RULE_userName; }
49309 		@Override
49310 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49311 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUserName(this);
49312 			else return visitor.visitChildren(this);
49313 		}
49314 	}
49315 
49316 	public final UserNameContext userName() throws RecognitionException {
49317 		UserNameContext _localctx = new UserNameContext(_ctx, getState());
49318 		enterRule(_localctx, 920, RULE_userName);
49319 		try {
49320 			enterOuterAlt(_localctx, 1);
49321 			{
49322 			setState(6744);
49323 			ignoredNameIdentifier();
49324 			}
49325 		}
49326 		catch (RecognitionException re) {
49327 			_localctx.exception = re;
49328 			_errHandler.reportError(this, re);
49329 			_errHandler.recover(this, re);
49330 		}
49331 		finally {
49332 			exitRule();
49333 		}
49334 		return _localctx;
49335 	}
49336 
49337 	public static class IgnoredNameIdentifierContext extends ParserRuleContext {
49338 		public List<IdentifierContext> identifier() {
49339 			return getRuleContexts(IdentifierContext.class);
49340 		}
49341 		public IdentifierContext identifier(int i) {
49342 			return getRuleContext(IdentifierContext.class,i);
49343 		}
49344 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
49345 		public IgnoredNameIdentifierContext(ParserRuleContext parent, int invokingState) {
49346 			super(parent, invokingState);
49347 		}
49348 		@Override public int getRuleIndex() { return RULE_ignoredNameIdentifier; }
49349 		@Override
49350 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49351 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredNameIdentifier(this);
49352 			else return visitor.visitChildren(this);
49353 		}
49354 	}
49355 
49356 	public final IgnoredNameIdentifierContext ignoredNameIdentifier() throws RecognitionException {
49357 		IgnoredNameIdentifierContext _localctx = new IgnoredNameIdentifierContext(_ctx, getState());
49358 		enterRule(_localctx, 922, RULE_ignoredNameIdentifier);
49359 		int _la;
49360 		try {
49361 			enterOuterAlt(_localctx, 1);
49362 			{
49363 			setState(6746);
49364 			identifier();
49365 			setState(6749);
49366 			_errHandler.sync(this);
49367 			_la = _input.LA(1);
49368 			if (_la==DOT_) {
49369 				{
49370 				setState(6747);
49371 				match(DOT_);
49372 				setState(6748);
49373 				identifier();
49374 				}
49375 			}
49376 
49377 			}
49378 		}
49379 		catch (RecognitionException re) {
49380 			_localctx.exception = re;
49381 			_errHandler.reportError(this, re);
49382 			_errHandler.recover(this, re);
49383 		}
49384 		finally {
49385 			exitRule();
49386 		}
49387 		return _localctx;
49388 	}
49389 
49390 	public static class DropUserContext extends ParserRuleContext {
49391 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
49392 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
49393 		public UserNameContext userName() {
49394 			return getRuleContext(UserNameContext.class,0);
49395 		}
49396 		public IfExistsContext ifExists() {
49397 			return getRuleContext(IfExistsContext.class,0);
49398 		}
49399 		public DropUserContext(ParserRuleContext parent, int invokingState) {
49400 			super(parent, invokingState);
49401 		}
49402 		@Override public int getRuleIndex() { return RULE_dropUser; }
49403 		@Override
49404 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49405 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropUser(this);
49406 			else return visitor.visitChildren(this);
49407 		}
49408 	}
49409 
49410 	public final DropUserContext dropUser() throws RecognitionException {
49411 		DropUserContext _localctx = new DropUserContext(_ctx, getState());
49412 		enterRule(_localctx, 924, RULE_dropUser);
49413 		int _la;
49414 		try {
49415 			enterOuterAlt(_localctx, 1);
49416 			{
49417 			setState(6751);
49418 			match(DROP);
49419 			setState(6752);
49420 			match(USER);
49421 			setState(6754);
49422 			_errHandler.sync(this);
49423 			_la = _input.LA(1);
49424 			if (_la==IF) {
49425 				{
49426 				setState(6753);
49427 				ifExists();
49428 				}
49429 			}
49430 
49431 			setState(6756);
49432 			userName();
49433 			}
49434 		}
49435 		catch (RecognitionException re) {
49436 			_localctx.exception = re;
49437 			_errHandler.reportError(this, re);
49438 			_errHandler.recover(this, re);
49439 		}
49440 		finally {
49441 			exitRule();
49442 		}
49443 		return _localctx;
49444 	}
49445 
49446 	public static class AlterUserContext extends ParserRuleContext {
49447 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
49448 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
49449 		public UserNameContext userName() {
49450 			return getRuleContext(UserNameContext.class,0);
49451 		}
49452 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
49453 		public List<SetItemContext> setItem() {
49454 			return getRuleContexts(SetItemContext.class);
49455 		}
49456 		public SetItemContext setItem(int i) {
49457 			return getRuleContext(SetItemContext.class,i);
49458 		}
49459 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
49460 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
49461 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
49462 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
49463 		public TerminalNode COMMA_(int i) {
49464 			return getToken(SQLServerStatementParser.COMMA_, i);
49465 		}
49466 		public AlterUserContext(ParserRuleContext parent, int invokingState) {
49467 			super(parent, invokingState);
49468 		}
49469 		@Override public int getRuleIndex() { return RULE_alterUser; }
49470 		@Override
49471 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49472 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterUser(this);
49473 			else return visitor.visitChildren(this);
49474 		}
49475 	}
49476 
49477 	public final AlterUserContext alterUser() throws RecognitionException {
49478 		AlterUserContext _localctx = new AlterUserContext(_ctx, getState());
49479 		enterRule(_localctx, 926, RULE_alterUser);
49480 		int _la;
49481 		try {
49482 			enterOuterAlt(_localctx, 1);
49483 			{
49484 			setState(6758);
49485 			match(ALTER);
49486 			setState(6759);
49487 			match(USER);
49488 			setState(6760);
49489 			userName();
49490 			setState(6773);
49491 			_errHandler.sync(this);
49492 			switch (_input.LA(1)) {
49493 			case WITH:
49494 				{
49495 				setState(6761);
49496 				match(WITH);
49497 				setState(6762);
49498 				setItem();
49499 				setState(6767);
49500 				_errHandler.sync(this);
49501 				_la = _input.LA(1);
49502 				while (_la==COMMA_) {
49503 					{
49504 					{
49505 					setState(6763);
49506 					match(COMMA_);
49507 					setState(6764);
49508 					setItem();
49509 					}
49510 					}
49511 					setState(6769);
49512 					_errHandler.sync(this);
49513 					_la = _input.LA(1);
49514 				}
49515 				}
49516 				break;
49517 			case FROM:
49518 				{
49519 				setState(6770);
49520 				match(FROM);
49521 				setState(6771);
49522 				match(EXTERNAL);
49523 				setState(6772);
49524 				match(PROVIDER);
49525 				}
49526 				break;
49527 			default:
49528 				throw new NoViableAltException(this);
49529 			}
49530 			}
49531 		}
49532 		catch (RecognitionException re) {
49533 			_localctx.exception = re;
49534 			_errHandler.reportError(this, re);
49535 			_errHandler.recover(this, re);
49536 		}
49537 		finally {
49538 			exitRule();
49539 		}
49540 		return _localctx;
49541 	}
49542 
49543 	public static class SetItemContext extends ParserRuleContext {
49544 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
49545 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
49546 		public TerminalNode EQ_(int i) {
49547 			return getToken(SQLServerStatementParser.EQ_, i);
49548 		}
49549 		public UserNameContext userName() {
49550 			return getRuleContext(UserNameContext.class,0);
49551 		}
49552 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
49553 		public SchemaNameContext schemaName() {
49554 			return getRuleContext(SchemaNameContext.class,0);
49555 		}
49556 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
49557 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
49558 		public IdentifierContext identifier() {
49559 			return getRuleContext(IdentifierContext.class,0);
49560 		}
49561 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
49562 		public List<StringLiteralsContext> stringLiterals() {
49563 			return getRuleContexts(StringLiteralsContext.class);
49564 		}
49565 		public StringLiteralsContext stringLiterals(int i) {
49566 			return getRuleContext(StringLiteralsContext.class,i);
49567 		}
49568 		public TerminalNode OLD_PASSWORD() { return getToken(SQLServerStatementParser.OLD_PASSWORD, 0); }
49569 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
49570 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
49571 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
49572 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
49573 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
49574 		public SetItemContext(ParserRuleContext parent, int invokingState) {
49575 			super(parent, invokingState);
49576 		}
49577 		@Override public int getRuleIndex() { return RULE_setItem; }
49578 		@Override
49579 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49580 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetItem(this);
49581 			else return visitor.visitChildren(this);
49582 		}
49583 	}
49584 
49585 	public final SetItemContext setItem() throws RecognitionException {
49586 		SetItemContext _localctx = new SetItemContext(_ctx, getState());
49587 		enterRule(_localctx, 928, RULE_setItem);
49588 		int _la;
49589 		try {
49590 			setState(6806);
49591 			_errHandler.sync(this);
49592 			switch (_input.LA(1)) {
49593 			case NAME:
49594 				enterOuterAlt(_localctx, 1);
49595 				{
49596 				setState(6775);
49597 				match(NAME);
49598 				setState(6776);
49599 				match(EQ_);
49600 				setState(6777);
49601 				userName();
49602 				}
49603 				break;
49604 			case DEFAULT_SCHEMA:
49605 				enterOuterAlt(_localctx, 2);
49606 				{
49607 				setState(6778);
49608 				match(DEFAULT_SCHEMA);
49609 				setState(6779);
49610 				match(EQ_);
49611 				setState(6782);
49612 				_errHandler.sync(this);
49613 				switch (_input.LA(1)) {
49614 				case TRUNCATE:
49615 				case SCHEMA:
49616 				case COLUMNS:
49617 				case PRECISION:
49618 				case FUNCTION:
49619 				case TRIGGER:
49620 				case CAST:
49621 				case SUBSTRING:
49622 				case OFF:
49623 				case GROUP:
49624 				case LIMIT:
49625 				case OFFSET:
49626 				case SAVEPOINT:
49627 				case BOOLEAN:
49628 				case ARRAY:
49629 				case DATE:
49630 				case LOCALTIME:
49631 				case LOCALTIMESTAMP:
49632 				case QUARTER:
49633 				case MONTH:
49634 				case WEEK:
49635 				case DAY:
49636 				case SECOND:
49637 				case MICROSECOND:
49638 				case MAX:
49639 				case MIN:
49640 				case SUM:
49641 				case COUNT:
49642 				case AVG:
49643 				case ENABLE:
49644 				case DISABLE:
49645 				case INSTANCE:
49646 				case DO:
49647 				case DEFINER:
49648 				case SQL:
49649 				case CASCADED:
49650 				case LOCAL:
49651 				case NEXT:
49652 				case NAME:
49653 				case INTEGER:
49654 				case TYPE:
49655 				case TEXT:
49656 				case VIEWS:
49657 				case READ_ONLY:
49658 				case DATABASE:
49659 				case RETURNS:
49660 				case DATEPART:
49661 				case PASSWORD:
49662 				case BINARY:
49663 				case HIDDEN_:
49664 				case MOD:
49665 				case PARTITION:
49666 				case PARTITIONS:
49667 				case TOP:
49668 				case ROW:
49669 				case ROWS:
49670 				case XOR:
49671 				case ALWAYS:
49672 				case ROLE:
49673 				case START:
49674 				case ALGORITHM:
49675 				case AUTO:
49676 				case BLOCKERS:
49677 				case CLUSTERED:
49678 				case NONCLUSTERED:
49679 				case COLUMNSTORE:
49680 				case CONTENT:
49681 				case YEARS:
49682 				case MONTHS:
49683 				case WEEKS:
49684 				case DAYS:
49685 				case MINUTES:
49686 				case DENY:
49687 				case DETERMINISTIC:
49688 				case DISTRIBUTION:
49689 				case DOCUMENT:
49690 				case DURABILITY:
49691 				case ENCRYPTED:
49692 				case FILESTREAM:
49693 				case FILETABLE:
49694 				case FILLFACTOR:
49695 				case FOLLOWING:
49696 				case HASH:
49697 				case HEAP:
49698 				case INBOUND:
49699 				case OUTBOUND:
49700 				case UNBOUNDED:
49701 				case INFINITE:
49702 				case LOGIN:
49703 				case MASKED:
49704 				case MAXDOP:
49705 				case MOVE:
49706 				case NOCHECK:
49707 				case OBJECT:
49708 				case ONLINE:
49709 				case OVER:
49710 				case PAGE:
49711 				case PAUSED:
49712 				case PERIOD:
49713 				case PERSISTED:
49714 				case PRECEDING:
49715 				case RANDOMIZED:
49716 				case RANGE:
49717 				case REBUILD:
49718 				case REPLICATE:
49719 				case REPLICATION:
49720 				case RESUMABLE:
49721 				case ROWGUIDCOL:
49722 				case SAVE:
49723 				case SELF:
49724 				case SPARSE:
49725 				case SWITCH:
49726 				case TRAN:
49727 				case TRANCOUNT:
49728 				case CONTROL:
49729 				case CONCAT:
49730 				case TAKE:
49731 				case OWNERSHIP:
49732 				case DEFINITION:
49733 				case APPLICATION:
49734 				case ASSEMBLY:
49735 				case SYMMETRIC:
49736 				case ASYMMETRIC:
49737 				case SERVER:
49738 				case RECEIVE:
49739 				case CHANGE:
49740 				case TRACE:
49741 				case TRACKING:
49742 				case RESOURCES:
49743 				case SETTINGS:
49744 				case STATE:
49745 				case AVAILABILITY:
49746 				case CREDENTIAL:
49747 				case ENDPOINT:
49748 				case EVENT:
49749 				case NOTIFICATION:
49750 				case LINKED:
49751 				case AUDIT:
49752 				case DDL:
49753 				case XML:
49754 				case IMPERSONATE:
49755 				case SECURABLES:
49756 				case AUTHENTICATE:
49757 				case EXTERNAL:
49758 				case ACCESS:
49759 				case ADMINISTER:
49760 				case BULK:
49761 				case OPERATIONS:
49762 				case UNSAFE:
49763 				case SHUTDOWN:
49764 				case SCOPED:
49765 				case CONFIGURATION:
49766 				case DATASPACE:
49767 				case SERVICE:
49768 				case CERTIFICATE:
49769 				case CONTRACT:
49770 				case ENCRYPTION:
49771 				case MASTER:
49772 				case DATA:
49773 				case SOURCE:
49774 				case FILE:
49775 				case FORMAT:
49776 				case LIBRARY:
49777 				case FULLTEXT:
49778 				case MASK:
49779 				case UNMASK:
49780 				case MESSAGE:
49781 				case REMOTE:
49782 				case BINDING:
49783 				case ROUTE:
49784 				case SECURITY:
49785 				case POLICY:
49786 				case AGGREGATE:
49787 				case QUEUE:
49788 				case RULE:
49789 				case SYNONYM:
49790 				case COLLECTION:
49791 				case SCRIPT:
49792 				case KILL:
49793 				case BACKUP:
49794 				case LOG:
49795 				case SHOWPLAN:
49796 				case SUBSCRIBE:
49797 				case QUERY:
49798 				case NOTIFICATIONS:
49799 				case CHECKPOINT:
49800 				case SEQUENCE:
49801 				case ABORT_AFTER_WAIT:
49802 				case ALLOW_PAGE_LOCKS:
49803 				case ALLOW_ROW_LOCKS:
49804 				case ALL_SPARSE_COLUMNS:
49805 				case BUCKET_COUNT:
49806 				case COLUMNSTORE_ARCHIVE:
49807 				case COLUMN_ENCRYPTION_KEY:
49808 				case COLUMN_SET:
49809 				case COMPRESSION_DELAY:
49810 				case DATABASE_DEAULT:
49811 				case DATA_COMPRESSION:
49812 				case DATA_CONSISTENCY_CHECK:
49813 				case ENCRYPTION_TYPE:
49814 				case SYSTEM_TIME:
49815 				case SYSTEM_VERSIONING:
49816 				case TEXTIMAGE_ON:
49817 				case WAIT_AT_LOW_PRIORITY:
49818 				case STATISTICS_INCREMENTAL:
49819 				case STATISTICS_NORECOMPUTE:
49820 				case ROUND_ROBIN:
49821 				case SCHEMA_AND_DATA:
49822 				case SCHEMA_ONLY:
49823 				case SORT_IN_TEMPDB:
49824 				case IGNORE_DUP_KEY:
49825 				case IMPLICIT_TRANSACTIONS:
49826 				case MAX_DURATION:
49827 				case MEMORY_OPTIMIZED:
49828 				case MIGRATION_STATE:
49829 				case PAD_INDEX:
49830 				case REMOTE_DATA_ARCHIVE:
49831 				case FILESTREAM_ON:
49832 				case FILETABLE_COLLATE_FILENAME:
49833 				case FILETABLE_DIRECTORY:
49834 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
49835 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
49836 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
49837 				case FILTER_PREDICATE:
49838 				case HISTORY_RETENTION_PERIOD:
49839 				case HISTORY_TABLE:
49840 				case LOCK_ESCALATION:
49841 				case DROP_EXISTING:
49842 				case ROW_NUMBER:
49843 				case FIRST:
49844 				case DATETIME2:
49845 				case OUTPUT:
49846 				case INSERTED:
49847 				case DELETED:
49848 				case FILENAME:
49849 				case SIZE:
49850 				case MAXSIZE:
49851 				case FILEGROWTH:
49852 				case UNLIMITED:
49853 				case KB:
49854 				case MB:
49855 				case GB:
49856 				case TB:
49857 				case CONTAINS:
49858 				case MEMORY_OPTIMIZED_DATA:
49859 				case FILEGROUP:
49860 				case NON_TRANSACTED_ACCESS:
49861 				case DB_CHAINING:
49862 				case TRUSTWORTHY:
49863 				case FORWARD_ONLY:
49864 				case KEYSET:
49865 				case FAST_FORWARD:
49866 				case SCROLL_LOCKS:
49867 				case OPTIMISTIC:
49868 				case TYPE_WARNING:
49869 				case SCHEMABINDING:
49870 				case CALLER:
49871 				case OWNER:
49872 				case SNAPSHOT:
49873 				case REPEATABLE:
49874 				case SERIALIZABLE:
49875 				case NATIVE_COMPILATION:
49876 				case VIEW_METADATA:
49877 				case INSTEAD:
49878 				case APPEND:
49879 				case INCREMENT:
49880 				case CACHE:
49881 				case MINVALUE:
49882 				case MAXVALUE:
49883 				case RESTART:
49884 				case LOB_COMPACTION:
49885 				case COMPRESS_ALL_ROW_GROUPS:
49886 				case REORGANIZE:
49887 				case RESUME:
49888 				case PAUSE:
49889 				case ABORT:
49890 				case ACCELERATED_DATABASE_RECOVERY:
49891 				case PERSISTENT_VERSION_STORE_FILEGROUP:
49892 				case IMMEDIATE:
49893 				case NO_WAIT:
49894 				case TARGET_RECOVERY_TIME:
49895 				case SECONDS:
49896 				case HONOR_BROKER_PRIORITY:
49897 				case ERROR_BROKER_CONVERSATIONS:
49898 				case NEW_BROKER:
49899 				case DISABLE_BROKER:
49900 				case ENABLE_BROKER:
49901 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
49902 				case READ_COMMITTED_SNAPSHOT:
49903 				case ALLOW_SNAPSHOT_ISOLATION:
49904 				case RECURSIVE_TRIGGERS:
49905 				case QUOTED_IDENTIFIER:
49906 				case NUMERIC_ROUNDABORT:
49907 				case CONCAT_NULL_YIELDS_NULL:
49908 				case COMPATIBILITY_LEVEL:
49909 				case ARITHABORT:
49910 				case ANSI_WARNINGS:
49911 				case ANSI_PADDING:
49912 				case ANSI_NULLS:
49913 				case ANSI_NULL_DEFAULT:
49914 				case PAGE_VERIFY:
49915 				case CHECKSUM:
49916 				case TORN_PAGE_DETECTION:
49917 				case BULK_LOGGED:
49918 				case RECOVERY:
49919 				case TOTAL_EXECUTION_CPU_TIME_MS:
49920 				case TOTAL_COMPILE_CPU_TIME_MS:
49921 				case STALE_CAPTURE_POLICY_THRESHOLD:
49922 				case EXECUTION_COUNT:
49923 				case QUERY_CAPTURE_POLICY:
49924 				case WAIT_STATS_CAPTURE_MODE:
49925 				case MAX_PLANS_PER_QUERY:
49926 				case QUERY_CAPTURE_MODE:
49927 				case SIZE_BASED_CLEANUP_MODE:
49928 				case INTERVAL_LENGTH_MINUTES:
49929 				case MAX_STORAGE_SIZE_MB:
49930 				case DATA_FLUSH_INTERVAL_SECONDS:
49931 				case CLEANUP_POLICY:
49932 				case CUSTOM:
49933 				case STALE_QUERY_THRESHOLD_DAYS:
49934 				case OPERATION_MODE:
49935 				case QUERY_STORE:
49936 				case CURSOR_DEFAULT:
49937 				case GLOBAL:
49938 				case CURSOR_CLOSE_ON_COMMIT:
49939 				case HOURS:
49940 				case CHANGE_RETENTION:
49941 				case AUTO_CLEANUP:
49942 				case CHANGE_TRACKING:
49943 				case AUTOMATIC_TUNING:
49944 				case FORCE_LAST_GOOD_PLAN:
49945 				case AUTO_UPDATE_STATISTICS_ASYNC:
49946 				case AUTO_UPDATE_STATISTICS:
49947 				case AUTO_SHRINK:
49948 				case AUTO_CREATE_STATISTICS:
49949 				case INCREMENTAL:
49950 				case AUTO_CLOSE:
49951 				case DATA_RETENTION:
49952 				case TEMPORAL_HISTORY_RETENTION:
49953 				case EDITION:
49954 				case MIXED_PAGE_ALLOCATION:
49955 				case DISABLED:
49956 				case ALLOWED:
49957 				case HADR:
49958 				case MULTI_USER:
49959 				case RESTRICTED_USER:
49960 				case SINGLE_USER:
49961 				case OFFLINE:
49962 				case EMERGENCY:
49963 				case SUSPEND:
49964 				case DATE_CORRELATION_OPTIMIZATION:
49965 				case ELASTIC_POOL:
49966 				case SERVICE_OBJECTIVE:
49967 				case DATABASE_NAME:
49968 				case ALLOW_CONNECTIONS:
49969 				case GEO:
49970 				case NAMED:
49971 				case DATEFIRST:
49972 				case BACKUP_STORAGE_REDUNDANCY:
49973 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
49974 				case SECONDARY:
49975 				case FAILOVER:
49976 				case DEFAULT_FULLTEXT_LANGUAGE:
49977 				case DEFAULT_LANGUAGE:
49978 				case INLINE:
49979 				case NESTED_TRIGGERS:
49980 				case TRANSFORM_NOISE_WORDS:
49981 				case TWO_DIGIT_YEAR_CUTOFF:
49982 				case PERSISTENT_LOG_BUFFER:
49983 				case DIRECTORY_NAME:
49984 				case DATEFORMAT:
49985 				case DELAYED_DURABILITY:
49986 				case AUTHORIZATION:
49987 				case TRANSFER:
49988 				case PROVIDER:
49989 				case SEARCH:
49990 				case MEMBER:
49991 				case IDENTIFIER_:
49992 				case DELIMITED_IDENTIFIER_:
49993 					{
49994 					setState(6780);
49995 					schemaName();
49996 					}
49997 					break;
49998 				case NULL:
49999 					{
50000 					setState(6781);
50001 					match(NULL);
50002 					}
50003 					break;
50004 				default:
50005 					throw new NoViableAltException(this);
50006 				}
50007 				}
50008 				break;
50009 			case LOGIN:
50010 				enterOuterAlt(_localctx, 3);
50011 				{
50012 				setState(6784);
50013 				match(LOGIN);
50014 				setState(6785);
50015 				match(EQ_);
50016 				setState(6786);
50017 				identifier();
50018 				}
50019 				break;
50020 			case PASSWORD:
50021 				enterOuterAlt(_localctx, 4);
50022 				{
50023 				setState(6787);
50024 				match(PASSWORD);
50025 				setState(6788);
50026 				match(EQ_);
50027 				setState(6789);
50028 				stringLiterals();
50029 				setState(6793);
50030 				_errHandler.sync(this);
50031 				_la = _input.LA(1);
50032 				if (_la==OLD_PASSWORD) {
50033 					{
50034 					setState(6790);
50035 					match(OLD_PASSWORD);
50036 					setState(6791);
50037 					match(EQ_);
50038 					setState(6792);
50039 					stringLiterals();
50040 					}
50041 				}
50042 
50043 				}
50044 				break;
50045 			case DEFAULT_LANGUAGE:
50046 				enterOuterAlt(_localctx, 5);
50047 				{
50048 				setState(6795);
50049 				match(DEFAULT_LANGUAGE);
50050 				setState(6796);
50051 				match(EQ_);
50052 				setState(6799);
50053 				_errHandler.sync(this);
50054 				switch (_input.LA(1)) {
50055 				case NONE:
50056 					{
50057 					setState(6797);
50058 					match(NONE);
50059 					}
50060 					break;
50061 				case TRUNCATE:
50062 				case SCHEMA:
50063 				case COLUMNS:
50064 				case PRECISION:
50065 				case FUNCTION:
50066 				case TRIGGER:
50067 				case CAST:
50068 				case SUBSTRING:
50069 				case OFF:
50070 				case GROUP:
50071 				case LIMIT:
50072 				case OFFSET:
50073 				case SAVEPOINT:
50074 				case BOOLEAN:
50075 				case ARRAY:
50076 				case DATE:
50077 				case LOCALTIME:
50078 				case LOCALTIMESTAMP:
50079 				case QUARTER:
50080 				case MONTH:
50081 				case WEEK:
50082 				case DAY:
50083 				case SECOND:
50084 				case MICROSECOND:
50085 				case MAX:
50086 				case MIN:
50087 				case SUM:
50088 				case COUNT:
50089 				case AVG:
50090 				case ENABLE:
50091 				case DISABLE:
50092 				case INSTANCE:
50093 				case DO:
50094 				case DEFINER:
50095 				case SQL:
50096 				case CASCADED:
50097 				case LOCAL:
50098 				case NEXT:
50099 				case NAME:
50100 				case INTEGER:
50101 				case TYPE:
50102 				case TEXT:
50103 				case VIEWS:
50104 				case READ_ONLY:
50105 				case DATABASE:
50106 				case RETURNS:
50107 				case DATEPART:
50108 				case PASSWORD:
50109 				case BINARY:
50110 				case HIDDEN_:
50111 				case MOD:
50112 				case PARTITION:
50113 				case PARTITIONS:
50114 				case TOP:
50115 				case ROW:
50116 				case ROWS:
50117 				case XOR:
50118 				case ALWAYS:
50119 				case ROLE:
50120 				case START:
50121 				case ALGORITHM:
50122 				case AUTO:
50123 				case BLOCKERS:
50124 				case CLUSTERED:
50125 				case NONCLUSTERED:
50126 				case COLUMNSTORE:
50127 				case CONTENT:
50128 				case YEARS:
50129 				case MONTHS:
50130 				case WEEKS:
50131 				case DAYS:
50132 				case MINUTES:
50133 				case DENY:
50134 				case DETERMINISTIC:
50135 				case DISTRIBUTION:
50136 				case DOCUMENT:
50137 				case DURABILITY:
50138 				case ENCRYPTED:
50139 				case FILESTREAM:
50140 				case FILETABLE:
50141 				case FILLFACTOR:
50142 				case FOLLOWING:
50143 				case HASH:
50144 				case HEAP:
50145 				case INBOUND:
50146 				case OUTBOUND:
50147 				case UNBOUNDED:
50148 				case INFINITE:
50149 				case LOGIN:
50150 				case MASKED:
50151 				case MAXDOP:
50152 				case MOVE:
50153 				case NOCHECK:
50154 				case OBJECT:
50155 				case ONLINE:
50156 				case OVER:
50157 				case PAGE:
50158 				case PAUSED:
50159 				case PERIOD:
50160 				case PERSISTED:
50161 				case PRECEDING:
50162 				case RANDOMIZED:
50163 				case RANGE:
50164 				case REBUILD:
50165 				case REPLICATE:
50166 				case REPLICATION:
50167 				case RESUMABLE:
50168 				case ROWGUIDCOL:
50169 				case SAVE:
50170 				case SELF:
50171 				case SPARSE:
50172 				case SWITCH:
50173 				case TRAN:
50174 				case TRANCOUNT:
50175 				case CONTROL:
50176 				case CONCAT:
50177 				case TAKE:
50178 				case OWNERSHIP:
50179 				case DEFINITION:
50180 				case APPLICATION:
50181 				case ASSEMBLY:
50182 				case SYMMETRIC:
50183 				case ASYMMETRIC:
50184 				case SERVER:
50185 				case RECEIVE:
50186 				case CHANGE:
50187 				case TRACE:
50188 				case TRACKING:
50189 				case RESOURCES:
50190 				case SETTINGS:
50191 				case STATE:
50192 				case AVAILABILITY:
50193 				case CREDENTIAL:
50194 				case ENDPOINT:
50195 				case EVENT:
50196 				case NOTIFICATION:
50197 				case LINKED:
50198 				case AUDIT:
50199 				case DDL:
50200 				case XML:
50201 				case IMPERSONATE:
50202 				case SECURABLES:
50203 				case AUTHENTICATE:
50204 				case EXTERNAL:
50205 				case ACCESS:
50206 				case ADMINISTER:
50207 				case BULK:
50208 				case OPERATIONS:
50209 				case UNSAFE:
50210 				case SHUTDOWN:
50211 				case SCOPED:
50212 				case CONFIGURATION:
50213 				case DATASPACE:
50214 				case SERVICE:
50215 				case CERTIFICATE:
50216 				case CONTRACT:
50217 				case ENCRYPTION:
50218 				case MASTER:
50219 				case DATA:
50220 				case SOURCE:
50221 				case FILE:
50222 				case FORMAT:
50223 				case LIBRARY:
50224 				case FULLTEXT:
50225 				case MASK:
50226 				case UNMASK:
50227 				case MESSAGE:
50228 				case REMOTE:
50229 				case BINDING:
50230 				case ROUTE:
50231 				case SECURITY:
50232 				case POLICY:
50233 				case AGGREGATE:
50234 				case QUEUE:
50235 				case RULE:
50236 				case SYNONYM:
50237 				case COLLECTION:
50238 				case SCRIPT:
50239 				case KILL:
50240 				case BACKUP:
50241 				case LOG:
50242 				case SHOWPLAN:
50243 				case SUBSCRIBE:
50244 				case QUERY:
50245 				case NOTIFICATIONS:
50246 				case CHECKPOINT:
50247 				case SEQUENCE:
50248 				case ABORT_AFTER_WAIT:
50249 				case ALLOW_PAGE_LOCKS:
50250 				case ALLOW_ROW_LOCKS:
50251 				case ALL_SPARSE_COLUMNS:
50252 				case BUCKET_COUNT:
50253 				case COLUMNSTORE_ARCHIVE:
50254 				case COLUMN_ENCRYPTION_KEY:
50255 				case COLUMN_SET:
50256 				case COMPRESSION_DELAY:
50257 				case DATABASE_DEAULT:
50258 				case DATA_COMPRESSION:
50259 				case DATA_CONSISTENCY_CHECK:
50260 				case ENCRYPTION_TYPE:
50261 				case SYSTEM_TIME:
50262 				case SYSTEM_VERSIONING:
50263 				case TEXTIMAGE_ON:
50264 				case WAIT_AT_LOW_PRIORITY:
50265 				case STATISTICS_INCREMENTAL:
50266 				case STATISTICS_NORECOMPUTE:
50267 				case ROUND_ROBIN:
50268 				case SCHEMA_AND_DATA:
50269 				case SCHEMA_ONLY:
50270 				case SORT_IN_TEMPDB:
50271 				case IGNORE_DUP_KEY:
50272 				case IMPLICIT_TRANSACTIONS:
50273 				case MAX_DURATION:
50274 				case MEMORY_OPTIMIZED:
50275 				case MIGRATION_STATE:
50276 				case PAD_INDEX:
50277 				case REMOTE_DATA_ARCHIVE:
50278 				case FILESTREAM_ON:
50279 				case FILETABLE_COLLATE_FILENAME:
50280 				case FILETABLE_DIRECTORY:
50281 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
50282 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
50283 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
50284 				case FILTER_PREDICATE:
50285 				case HISTORY_RETENTION_PERIOD:
50286 				case HISTORY_TABLE:
50287 				case LOCK_ESCALATION:
50288 				case DROP_EXISTING:
50289 				case ROW_NUMBER:
50290 				case FIRST:
50291 				case DATETIME2:
50292 				case OUTPUT:
50293 				case INSERTED:
50294 				case DELETED:
50295 				case FILENAME:
50296 				case SIZE:
50297 				case MAXSIZE:
50298 				case FILEGROWTH:
50299 				case UNLIMITED:
50300 				case KB:
50301 				case MB:
50302 				case GB:
50303 				case TB:
50304 				case CONTAINS:
50305 				case MEMORY_OPTIMIZED_DATA:
50306 				case FILEGROUP:
50307 				case NON_TRANSACTED_ACCESS:
50308 				case DB_CHAINING:
50309 				case TRUSTWORTHY:
50310 				case FORWARD_ONLY:
50311 				case KEYSET:
50312 				case FAST_FORWARD:
50313 				case SCROLL_LOCKS:
50314 				case OPTIMISTIC:
50315 				case TYPE_WARNING:
50316 				case SCHEMABINDING:
50317 				case CALLER:
50318 				case OWNER:
50319 				case SNAPSHOT:
50320 				case REPEATABLE:
50321 				case SERIALIZABLE:
50322 				case NATIVE_COMPILATION:
50323 				case VIEW_METADATA:
50324 				case INSTEAD:
50325 				case APPEND:
50326 				case INCREMENT:
50327 				case CACHE:
50328 				case MINVALUE:
50329 				case MAXVALUE:
50330 				case RESTART:
50331 				case LOB_COMPACTION:
50332 				case COMPRESS_ALL_ROW_GROUPS:
50333 				case REORGANIZE:
50334 				case RESUME:
50335 				case PAUSE:
50336 				case ABORT:
50337 				case ACCELERATED_DATABASE_RECOVERY:
50338 				case PERSISTENT_VERSION_STORE_FILEGROUP:
50339 				case IMMEDIATE:
50340 				case NO_WAIT:
50341 				case TARGET_RECOVERY_TIME:
50342 				case SECONDS:
50343 				case HONOR_BROKER_PRIORITY:
50344 				case ERROR_BROKER_CONVERSATIONS:
50345 				case NEW_BROKER:
50346 				case DISABLE_BROKER:
50347 				case ENABLE_BROKER:
50348 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
50349 				case READ_COMMITTED_SNAPSHOT:
50350 				case ALLOW_SNAPSHOT_ISOLATION:
50351 				case RECURSIVE_TRIGGERS:
50352 				case QUOTED_IDENTIFIER:
50353 				case NUMERIC_ROUNDABORT:
50354 				case CONCAT_NULL_YIELDS_NULL:
50355 				case COMPATIBILITY_LEVEL:
50356 				case ARITHABORT:
50357 				case ANSI_WARNINGS:
50358 				case ANSI_PADDING:
50359 				case ANSI_NULLS:
50360 				case ANSI_NULL_DEFAULT:
50361 				case PAGE_VERIFY:
50362 				case CHECKSUM:
50363 				case TORN_PAGE_DETECTION:
50364 				case BULK_LOGGED:
50365 				case RECOVERY:
50366 				case TOTAL_EXECUTION_CPU_TIME_MS:
50367 				case TOTAL_COMPILE_CPU_TIME_MS:
50368 				case STALE_CAPTURE_POLICY_THRESHOLD:
50369 				case EXECUTION_COUNT:
50370 				case QUERY_CAPTURE_POLICY:
50371 				case WAIT_STATS_CAPTURE_MODE:
50372 				case MAX_PLANS_PER_QUERY:
50373 				case QUERY_CAPTURE_MODE:
50374 				case SIZE_BASED_CLEANUP_MODE:
50375 				case INTERVAL_LENGTH_MINUTES:
50376 				case MAX_STORAGE_SIZE_MB:
50377 				case DATA_FLUSH_INTERVAL_SECONDS:
50378 				case CLEANUP_POLICY:
50379 				case CUSTOM:
50380 				case STALE_QUERY_THRESHOLD_DAYS:
50381 				case OPERATION_MODE:
50382 				case QUERY_STORE:
50383 				case CURSOR_DEFAULT:
50384 				case GLOBAL:
50385 				case CURSOR_CLOSE_ON_COMMIT:
50386 				case HOURS:
50387 				case CHANGE_RETENTION:
50388 				case AUTO_CLEANUP:
50389 				case CHANGE_TRACKING:
50390 				case AUTOMATIC_TUNING:
50391 				case FORCE_LAST_GOOD_PLAN:
50392 				case AUTO_UPDATE_STATISTICS_ASYNC:
50393 				case AUTO_UPDATE_STATISTICS:
50394 				case AUTO_SHRINK:
50395 				case AUTO_CREATE_STATISTICS:
50396 				case INCREMENTAL:
50397 				case AUTO_CLOSE:
50398 				case DATA_RETENTION:
50399 				case TEMPORAL_HISTORY_RETENTION:
50400 				case EDITION:
50401 				case MIXED_PAGE_ALLOCATION:
50402 				case DISABLED:
50403 				case ALLOWED:
50404 				case HADR:
50405 				case MULTI_USER:
50406 				case RESTRICTED_USER:
50407 				case SINGLE_USER:
50408 				case OFFLINE:
50409 				case EMERGENCY:
50410 				case SUSPEND:
50411 				case DATE_CORRELATION_OPTIMIZATION:
50412 				case ELASTIC_POOL:
50413 				case SERVICE_OBJECTIVE:
50414 				case DATABASE_NAME:
50415 				case ALLOW_CONNECTIONS:
50416 				case GEO:
50417 				case NAMED:
50418 				case DATEFIRST:
50419 				case BACKUP_STORAGE_REDUNDANCY:
50420 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
50421 				case SECONDARY:
50422 				case FAILOVER:
50423 				case DEFAULT_FULLTEXT_LANGUAGE:
50424 				case DEFAULT_LANGUAGE:
50425 				case INLINE:
50426 				case NESTED_TRIGGERS:
50427 				case TRANSFORM_NOISE_WORDS:
50428 				case TWO_DIGIT_YEAR_CUTOFF:
50429 				case PERSISTENT_LOG_BUFFER:
50430 				case DIRECTORY_NAME:
50431 				case DATEFORMAT:
50432 				case DELAYED_DURABILITY:
50433 				case AUTHORIZATION:
50434 				case TRANSFER:
50435 				case PROVIDER:
50436 				case SEARCH:
50437 				case MEMBER:
50438 				case IDENTIFIER_:
50439 				case DELIMITED_IDENTIFIER_:
50440 					{
50441 					setState(6798);
50442 					identifier();
50443 					}
50444 					break;
50445 				default:
50446 					throw new NoViableAltException(this);
50447 				}
50448 				}
50449 				break;
50450 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
50451 				enterOuterAlt(_localctx, 6);
50452 				{
50453 				setState(6801);
50454 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
50455 				setState(6802);
50456 				match(EQ_);
50457 				setState(6804);
50458 				_errHandler.sync(this);
50459 				_la = _input.LA(1);
50460 				if (_la==ON || _la==OFF) {
50461 					{
50462 					setState(6803);
50463 					_la = _input.LA(1);
50464 					if ( !(_la==ON || _la==OFF) ) {
50465 					_errHandler.recoverInline(this);
50466 					}
50467 					else {
50468 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
50469 						_errHandler.reportMatch(this);
50470 						consume();
50471 					}
50472 					}
50473 				}
50474 
50475 				}
50476 				break;
50477 			default:
50478 				throw new NoViableAltException(this);
50479 			}
50480 		}
50481 		catch (RecognitionException re) {
50482 			_localctx.exception = re;
50483 			_errHandler.reportError(this, re);
50484 			_errHandler.recover(this, re);
50485 		}
50486 		finally {
50487 			exitRule();
50488 		}
50489 		return _localctx;
50490 	}
50491 
50492 	public static class CreateRoleContext extends ParserRuleContext {
50493 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
50494 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
50495 		public List<NameContext> name() {
50496 			return getRuleContexts(NameContext.class);
50497 		}
50498 		public NameContext name(int i) {
50499 			return getRuleContext(NameContext.class,i);
50500 		}
50501 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
50502 		public CreateRoleContext(ParserRuleContext parent, int invokingState) {
50503 			super(parent, invokingState);
50504 		}
50505 		@Override public int getRuleIndex() { return RULE_createRole; }
50506 		@Override
50507 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50508 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateRole(this);
50509 			else return visitor.visitChildren(this);
50510 		}
50511 	}
50512 
50513 	public final CreateRoleContext createRole() throws RecognitionException {
50514 		CreateRoleContext _localctx = new CreateRoleContext(_ctx, getState());
50515 		enterRule(_localctx, 930, RULE_createRole);
50516 		int _la;
50517 		try {
50518 			enterOuterAlt(_localctx, 1);
50519 			{
50520 			setState(6808);
50521 			match(CREATE);
50522 			setState(6809);
50523 			match(ROLE);
50524 			setState(6810);
50525 			name();
50526 			setState(6813);
50527 			_errHandler.sync(this);
50528 			_la = _input.LA(1);
50529 			if (_la==AUTHORIZATION) {
50530 				{
50531 				setState(6811);
50532 				match(AUTHORIZATION);
50533 				setState(6812);
50534 				name();
50535 				}
50536 			}
50537 
50538 			}
50539 		}
50540 		catch (RecognitionException re) {
50541 			_localctx.exception = re;
50542 			_errHandler.reportError(this, re);
50543 			_errHandler.recover(this, re);
50544 		}
50545 		finally {
50546 			exitRule();
50547 		}
50548 		return _localctx;
50549 	}
50550 
50551 	public static class DropRoleContext extends ParserRuleContext {
50552 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
50553 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
50554 		public NameContext name() {
50555 			return getRuleContext(NameContext.class,0);
50556 		}
50557 		public IfExistsContext ifExists() {
50558 			return getRuleContext(IfExistsContext.class,0);
50559 		}
50560 		public DropRoleContext(ParserRuleContext parent, int invokingState) {
50561 			super(parent, invokingState);
50562 		}
50563 		@Override public int getRuleIndex() { return RULE_dropRole; }
50564 		@Override
50565 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50566 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropRole(this);
50567 			else return visitor.visitChildren(this);
50568 		}
50569 	}
50570 
50571 	public final DropRoleContext dropRole() throws RecognitionException {
50572 		DropRoleContext _localctx = new DropRoleContext(_ctx, getState());
50573 		enterRule(_localctx, 932, RULE_dropRole);
50574 		int _la;
50575 		try {
50576 			enterOuterAlt(_localctx, 1);
50577 			{
50578 			setState(6815);
50579 			match(DROP);
50580 			setState(6816);
50581 			match(ROLE);
50582 			setState(6818);
50583 			_errHandler.sync(this);
50584 			_la = _input.LA(1);
50585 			if (_la==IF) {
50586 				{
50587 				setState(6817);
50588 				ifExists();
50589 				}
50590 			}
50591 
50592 			setState(6820);
50593 			name();
50594 			}
50595 		}
50596 		catch (RecognitionException re) {
50597 			_localctx.exception = re;
50598 			_errHandler.reportError(this, re);
50599 			_errHandler.recover(this, re);
50600 		}
50601 		finally {
50602 			exitRule();
50603 		}
50604 		return _localctx;
50605 	}
50606 
50607 	public static class AlterRoleContext extends ParserRuleContext {
50608 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
50609 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
50610 		public List<NameContext> name() {
50611 			return getRuleContexts(NameContext.class);
50612 		}
50613 		public NameContext name(int i) {
50614 			return getRuleContext(NameContext.class,i);
50615 		}
50616 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
50617 		public TerminalNode MEMBER() { return getToken(SQLServerStatementParser.MEMBER, 0); }
50618 		public PrincipalContext principal() {
50619 			return getRuleContext(PrincipalContext.class,0);
50620 		}
50621 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
50622 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50623 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
50624 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50625 		public AlterRoleContext(ParserRuleContext parent, int invokingState) {
50626 			super(parent, invokingState);
50627 		}
50628 		@Override public int getRuleIndex() { return RULE_alterRole; }
50629 		@Override
50630 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50631 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterRole(this);
50632 			else return visitor.visitChildren(this);
50633 		}
50634 	}
50635 
50636 	public final AlterRoleContext alterRole() throws RecognitionException {
50637 		AlterRoleContext _localctx = new AlterRoleContext(_ctx, getState());
50638 		enterRule(_localctx, 934, RULE_alterRole);
50639 		try {
50640 			enterOuterAlt(_localctx, 1);
50641 			{
50642 			setState(6822);
50643 			match(ALTER);
50644 			setState(6823);
50645 			match(ROLE);
50646 			setState(6824);
50647 			name();
50648 			setState(6835);
50649 			_errHandler.sync(this);
50650 			switch (_input.LA(1)) {
50651 			case ADD:
50652 				{
50653 				setState(6825);
50654 				match(ADD);
50655 				setState(6826);
50656 				match(MEMBER);
50657 				setState(6827);
50658 				principal();
50659 				}
50660 				break;
50661 			case DROP:
50662 				{
50663 				setState(6828);
50664 				match(DROP);
50665 				setState(6829);
50666 				match(MEMBER);
50667 				setState(6830);
50668 				principal();
50669 				}
50670 				break;
50671 			case WITH:
50672 				{
50673 				setState(6831);
50674 				match(WITH);
50675 				setState(6832);
50676 				match(NAME);
50677 				setState(6833);
50678 				match(EQ_);
50679 				setState(6834);
50680 				name();
50681 				}
50682 				break;
50683 			default:
50684 				throw new NoViableAltException(this);
50685 			}
50686 			}
50687 		}
50688 		catch (RecognitionException re) {
50689 			_localctx.exception = re;
50690 			_errHandler.reportError(this, re);
50691 			_errHandler.recover(this, re);
50692 		}
50693 		finally {
50694 			exitRule();
50695 		}
50696 		return _localctx;
50697 	}
50698 
50699 	public static class CreateLoginContext extends ParserRuleContext {
50700 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
50701 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
50702 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
50703 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
50704 		}
50705 		public CreateLoginForSQLServerClauseContext createLoginForSQLServerClause() {
50706 			return getRuleContext(CreateLoginForSQLServerClauseContext.class,0);
50707 		}
50708 		public CreateLoginForAzureSQLDatabaseClauseContext createLoginForAzureSQLDatabaseClause() {
50709 			return getRuleContext(CreateLoginForAzureSQLDatabaseClauseContext.class,0);
50710 		}
50711 		public CreateLoginForAzureManagedInstanceClauseContext createLoginForAzureManagedInstanceClause() {
50712 			return getRuleContext(CreateLoginForAzureManagedInstanceClauseContext.class,0);
50713 		}
50714 		public CreateLoginForAzureSynapseAnalyticsClauseContext createLoginForAzureSynapseAnalyticsClause() {
50715 			return getRuleContext(CreateLoginForAzureSynapseAnalyticsClauseContext.class,0);
50716 		}
50717 		public CreateLoginForAnalyticsPlatformSystemClauseContext createLoginForAnalyticsPlatformSystemClause() {
50718 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemClauseContext.class,0);
50719 		}
50720 		public CreateLoginContext(ParserRuleContext parent, int invokingState) {
50721 			super(parent, invokingState);
50722 		}
50723 		@Override public int getRuleIndex() { return RULE_createLogin; }
50724 		@Override
50725 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50726 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLogin(this);
50727 			else return visitor.visitChildren(this);
50728 		}
50729 	}
50730 
50731 	public final CreateLoginContext createLogin() throws RecognitionException {
50732 		CreateLoginContext _localctx = new CreateLoginContext(_ctx, getState());
50733 		enterRule(_localctx, 936, RULE_createLogin);
50734 		try {
50735 			enterOuterAlt(_localctx, 1);
50736 			{
50737 			setState(6837);
50738 			match(CREATE);
50739 			setState(6838);
50740 			match(LOGIN);
50741 			setState(6839);
50742 			ignoredNameIdentifier();
50743 			setState(6845);
50744 			_errHandler.sync(this);
50745 			switch ( getInterpreter().adaptivePredict(_input,792,_ctx) ) {
50746 			case 1:
50747 				{
50748 				setState(6840);
50749 				createLoginForSQLServerClause();
50750 				}
50751 				break;
50752 			case 2:
50753 				{
50754 				setState(6841);
50755 				createLoginForAzureSQLDatabaseClause();
50756 				}
50757 				break;
50758 			case 3:
50759 				{
50760 				setState(6842);
50761 				createLoginForAzureManagedInstanceClause();
50762 				}
50763 				break;
50764 			case 4:
50765 				{
50766 				setState(6843);
50767 				createLoginForAzureSynapseAnalyticsClause();
50768 				}
50769 				break;
50770 			case 5:
50771 				{
50772 				setState(6844);
50773 				createLoginForAnalyticsPlatformSystemClause();
50774 				}
50775 				break;
50776 			}
50777 			}
50778 		}
50779 		catch (RecognitionException re) {
50780 			_localctx.exception = re;
50781 			_errHandler.reportError(this, re);
50782 			_errHandler.recover(this, re);
50783 		}
50784 		finally {
50785 			exitRule();
50786 		}
50787 		return _localctx;
50788 	}
50789 
50790 	public static class CreateLoginForSQLServerClauseContext extends ParserRuleContext {
50791 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50792 		public CreateLoginForSQLServerOptionListContext createLoginForSQLServerOptionList() {
50793 			return getRuleContext(CreateLoginForSQLServerOptionListContext.class,0);
50794 		}
50795 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50796 		public SourcesContext sources() {
50797 			return getRuleContext(SourcesContext.class,0);
50798 		}
50799 		public CreateLoginForSQLServerClauseContext(ParserRuleContext parent, int invokingState) {
50800 			super(parent, invokingState);
50801 		}
50802 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerClause; }
50803 		@Override
50804 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50805 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerClause(this);
50806 			else return visitor.visitChildren(this);
50807 		}
50808 	}
50809 
50810 	public final CreateLoginForSQLServerClauseContext createLoginForSQLServerClause() throws RecognitionException {
50811 		CreateLoginForSQLServerClauseContext _localctx = new CreateLoginForSQLServerClauseContext(_ctx, getState());
50812 		enterRule(_localctx, 938, RULE_createLoginForSQLServerClause);
50813 		try {
50814 			setState(6851);
50815 			_errHandler.sync(this);
50816 			switch (_input.LA(1)) {
50817 			case WITH:
50818 				enterOuterAlt(_localctx, 1);
50819 				{
50820 				setState(6847);
50821 				match(WITH);
50822 				setState(6848);
50823 				createLoginForSQLServerOptionList();
50824 				}
50825 				break;
50826 			case FROM:
50827 				enterOuterAlt(_localctx, 2);
50828 				{
50829 				setState(6849);
50830 				match(FROM);
50831 				setState(6850);
50832 				sources();
50833 				}
50834 				break;
50835 			default:
50836 				throw new NoViableAltException(this);
50837 			}
50838 		}
50839 		catch (RecognitionException re) {
50840 			_localctx.exception = re;
50841 			_errHandler.reportError(this, re);
50842 			_errHandler.recover(this, re);
50843 		}
50844 		finally {
50845 			exitRule();
50846 		}
50847 		return _localctx;
50848 	}
50849 
50850 	public static class CreateLoginForSQLServerOptionListContext extends ParserRuleContext {
50851 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50852 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50853 		public StringLiteralsContext stringLiterals() {
50854 			return getRuleContext(StringLiteralsContext.class,0);
50855 		}
50856 		public HashedPasswordContext hashedPassword() {
50857 			return getRuleContext(HashedPasswordContext.class,0);
50858 		}
50859 		public TerminalNode HASHED() { return getToken(SQLServerStatementParser.HASHED, 0); }
50860 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
50861 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50862 		public TerminalNode COMMA_(int i) {
50863 			return getToken(SQLServerStatementParser.COMMA_, i);
50864 		}
50865 		public List<CreateLoginForSQLServerOptionListClauseContext> createLoginForSQLServerOptionListClause() {
50866 			return getRuleContexts(CreateLoginForSQLServerOptionListClauseContext.class);
50867 		}
50868 		public CreateLoginForSQLServerOptionListClauseContext createLoginForSQLServerOptionListClause(int i) {
50869 			return getRuleContext(CreateLoginForSQLServerOptionListClauseContext.class,i);
50870 		}
50871 		public CreateLoginForSQLServerOptionListContext(ParserRuleContext parent, int invokingState) {
50872 			super(parent, invokingState);
50873 		}
50874 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerOptionList; }
50875 		@Override
50876 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50877 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerOptionList(this);
50878 			else return visitor.visitChildren(this);
50879 		}
50880 	}
50881 
50882 	public final CreateLoginForSQLServerOptionListContext createLoginForSQLServerOptionList() throws RecognitionException {
50883 		CreateLoginForSQLServerOptionListContext _localctx = new CreateLoginForSQLServerOptionListContext(_ctx, getState());
50884 		enterRule(_localctx, 940, RULE_createLoginForSQLServerOptionList);
50885 		int _la;
50886 		try {
50887 			enterOuterAlt(_localctx, 1);
50888 			{
50889 			setState(6853);
50890 			match(PASSWORD);
50891 			setState(6854);
50892 			match(EQ_);
50893 			setState(6859);
50894 			_errHandler.sync(this);
50895 			switch (_input.LA(1)) {
50896 			case STRING_:
50897 			case NCHAR_TEXT:
50898 				{
50899 				setState(6855);
50900 				stringLiterals();
50901 				}
50902 				break;
50903 			case HEX_DIGIT_:
50904 				{
50905 				setState(6856);
50906 				hashedPassword();
50907 				setState(6857);
50908 				match(HASHED);
50909 				}
50910 				break;
50911 			default:
50912 				throw new NoViableAltException(this);
50913 			}
50914 			setState(6862);
50915 			_errHandler.sync(this);
50916 			_la = _input.LA(1);
50917 			if (_la==MUST_CHANGE) {
50918 				{
50919 				setState(6861);
50920 				match(MUST_CHANGE);
50921 				}
50922 			}
50923 
50924 			setState(6873);
50925 			_errHandler.sync(this);
50926 			_la = _input.LA(1);
50927 			if (_la==COMMA_) {
50928 				{
50929 				setState(6864);
50930 				match(COMMA_);
50931 				setState(6865);
50932 				createLoginForSQLServerOptionListClause();
50933 				setState(6870);
50934 				_errHandler.sync(this);
50935 				_la = _input.LA(1);
50936 				while (_la==COMMA_) {
50937 					{
50938 					{
50939 					setState(6866);
50940 					match(COMMA_);
50941 					setState(6867);
50942 					createLoginForSQLServerOptionListClause();
50943 					}
50944 					}
50945 					setState(6872);
50946 					_errHandler.sync(this);
50947 					_la = _input.LA(1);
50948 				}
50949 				}
50950 			}
50951 
50952 			}
50953 		}
50954 		catch (RecognitionException re) {
50955 			_localctx.exception = re;
50956 			_errHandler.reportError(this, re);
50957 			_errHandler.recover(this, re);
50958 		}
50959 		finally {
50960 			exitRule();
50961 		}
50962 		return _localctx;
50963 	}
50964 
50965 	public static class CreateLoginForSQLServerOptionListClauseContext extends ParserRuleContext {
50966 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
50967 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50968 		public SidContext sid() {
50969 			return getRuleContext(SidContext.class,0);
50970 		}
50971 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
50972 		public DatabaseNameContext databaseName() {
50973 			return getRuleContext(DatabaseNameContext.class,0);
50974 		}
50975 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
50976 		public IdentifierContext identifier() {
50977 			return getRuleContext(IdentifierContext.class,0);
50978 		}
50979 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
50980 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
50981 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
50982 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
50983 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
50984 		public CreateLoginForSQLServerOptionListClauseContext(ParserRuleContext parent, int invokingState) {
50985 			super(parent, invokingState);
50986 		}
50987 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerOptionListClause; }
50988 		@Override
50989 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50990 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerOptionListClause(this);
50991 			else return visitor.visitChildren(this);
50992 		}
50993 	}
50994 
50995 	public final CreateLoginForSQLServerOptionListClauseContext createLoginForSQLServerOptionListClause() throws RecognitionException {
50996 		CreateLoginForSQLServerOptionListClauseContext _localctx = new CreateLoginForSQLServerOptionListClauseContext(_ctx, getState());
50997 		enterRule(_localctx, 942, RULE_createLoginForSQLServerOptionListClause);
50998 		int _la;
50999 		try {
51000 			setState(6893);
51001 			_errHandler.sync(this);
51002 			switch (_input.LA(1)) {
51003 			case SID:
51004 				enterOuterAlt(_localctx, 1);
51005 				{
51006 				setState(6875);
51007 				match(SID);
51008 				setState(6876);
51009 				match(EQ_);
51010 				setState(6877);
51011 				sid();
51012 				}
51013 				break;
51014 			case DEFAULT_DATABASE:
51015 				enterOuterAlt(_localctx, 2);
51016 				{
51017 				setState(6878);
51018 				match(DEFAULT_DATABASE);
51019 				setState(6879);
51020 				match(EQ_);
51021 				setState(6880);
51022 				databaseName();
51023 				}
51024 				break;
51025 			case DEFAULT_LANGUAGE:
51026 				enterOuterAlt(_localctx, 3);
51027 				{
51028 				setState(6881);
51029 				match(DEFAULT_LANGUAGE);
51030 				setState(6882);
51031 				match(EQ_);
51032 				setState(6883);
51033 				identifier();
51034 				}
51035 				break;
51036 			case CHECK_EXPIRATION:
51037 				enterOuterAlt(_localctx, 4);
51038 				{
51039 				setState(6884);
51040 				match(CHECK_EXPIRATION);
51041 				setState(6885);
51042 				match(EQ_);
51043 				setState(6886);
51044 				_la = _input.LA(1);
51045 				if ( !(_la==ON || _la==OFF) ) {
51046 				_errHandler.recoverInline(this);
51047 				}
51048 				else {
51049 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51050 					_errHandler.reportMatch(this);
51051 					consume();
51052 				}
51053 				}
51054 				break;
51055 			case CHECK_POLICY:
51056 				enterOuterAlt(_localctx, 5);
51057 				{
51058 				setState(6887);
51059 				match(CHECK_POLICY);
51060 				setState(6888);
51061 				match(EQ_);
51062 				setState(6889);
51063 				_la = _input.LA(1);
51064 				if ( !(_la==ON || _la==OFF) ) {
51065 				_errHandler.recoverInline(this);
51066 				}
51067 				else {
51068 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51069 					_errHandler.reportMatch(this);
51070 					consume();
51071 				}
51072 				}
51073 				break;
51074 			case CREDENTIAL:
51075 				enterOuterAlt(_localctx, 6);
51076 				{
51077 				setState(6890);
51078 				match(CREDENTIAL);
51079 				setState(6891);
51080 				match(EQ_);
51081 				setState(6892);
51082 				identifier();
51083 				}
51084 				break;
51085 			default:
51086 				throw new NoViableAltException(this);
51087 			}
51088 		}
51089 		catch (RecognitionException re) {
51090 			_localctx.exception = re;
51091 			_errHandler.reportError(this, re);
51092 			_errHandler.recover(this, re);
51093 		}
51094 		finally {
51095 			exitRule();
51096 		}
51097 		return _localctx;
51098 	}
51099 
51100 	public static class HashedPasswordContext extends ParserRuleContext {
51101 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
51102 		public HashedPasswordContext(ParserRuleContext parent, int invokingState) {
51103 			super(parent, invokingState);
51104 		}
51105 		@Override public int getRuleIndex() { return RULE_hashedPassword; }
51106 		@Override
51107 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51108 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHashedPassword(this);
51109 			else return visitor.visitChildren(this);
51110 		}
51111 	}
51112 
51113 	public final HashedPasswordContext hashedPassword() throws RecognitionException {
51114 		HashedPasswordContext _localctx = new HashedPasswordContext(_ctx, getState());
51115 		enterRule(_localctx, 944, RULE_hashedPassword);
51116 		try {
51117 			enterOuterAlt(_localctx, 1);
51118 			{
51119 			setState(6895);
51120 			match(HEX_DIGIT_);
51121 			}
51122 		}
51123 		catch (RecognitionException re) {
51124 			_localctx.exception = re;
51125 			_errHandler.reportError(this, re);
51126 			_errHandler.recover(this, re);
51127 		}
51128 		finally {
51129 			exitRule();
51130 		}
51131 		return _localctx;
51132 	}
51133 
51134 	public static class SidContext extends ParserRuleContext {
51135 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
51136 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
51137 		public SidContext(ParserRuleContext parent, int invokingState) {
51138 			super(parent, invokingState);
51139 		}
51140 		@Override public int getRuleIndex() { return RULE_sid; }
51141 		@Override
51142 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51143 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSid(this);
51144 			else return visitor.visitChildren(this);
51145 		}
51146 	}
51147 
51148 	public final SidContext sid() throws RecognitionException {
51149 		SidContext _localctx = new SidContext(_ctx, getState());
51150 		enterRule(_localctx, 946, RULE_sid);
51151 		int _la;
51152 		try {
51153 			enterOuterAlt(_localctx, 1);
51154 			{
51155 			setState(6897);
51156 			_la = _input.LA(1);
51157 			if ( !(_la==HEX_DIGIT_ || _la==NCHAR_TEXT) ) {
51158 			_errHandler.recoverInline(this);
51159 			}
51160 			else {
51161 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51162 				_errHandler.reportMatch(this);
51163 				consume();
51164 			}
51165 			}
51166 		}
51167 		catch (RecognitionException re) {
51168 			_localctx.exception = re;
51169 			_errHandler.reportError(this, re);
51170 			_errHandler.recover(this, re);
51171 		}
51172 		finally {
51173 			exitRule();
51174 		}
51175 		return _localctx;
51176 	}
51177 
51178 	public static class SourcesContext extends ParserRuleContext {
51179 		public TerminalNode WINDOWS() { return getToken(SQLServerStatementParser.WINDOWS, 0); }
51180 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51181 		public List<WindowsOptionsContext> windowsOptions() {
51182 			return getRuleContexts(WindowsOptionsContext.class);
51183 		}
51184 		public WindowsOptionsContext windowsOptions(int i) {
51185 			return getRuleContext(WindowsOptionsContext.class,i);
51186 		}
51187 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
51188 		public TerminalNode COMMA_(int i) {
51189 			return getToken(SQLServerStatementParser.COMMA_, i);
51190 		}
51191 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
51192 		public IdentifierContext identifier() {
51193 			return getRuleContext(IdentifierContext.class,0);
51194 		}
51195 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
51196 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
51197 		public SourcesContext(ParserRuleContext parent, int invokingState) {
51198 			super(parent, invokingState);
51199 		}
51200 		@Override public int getRuleIndex() { return RULE_sources; }
51201 		@Override
51202 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51203 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSources(this);
51204 			else return visitor.visitChildren(this);
51205 		}
51206 	}
51207 
51208 	public final SourcesContext sources() throws RecognitionException {
51209 		SourcesContext _localctx = new SourcesContext(_ctx, getState());
51210 		enterRule(_localctx, 948, RULE_sources);
51211 		int _la;
51212 		try {
51213 			setState(6916);
51214 			_errHandler.sync(this);
51215 			switch (_input.LA(1)) {
51216 			case WINDOWS:
51217 				enterOuterAlt(_localctx, 1);
51218 				{
51219 				setState(6899);
51220 				match(WINDOWS);
51221 				setState(6909);
51222 				_errHandler.sync(this);
51223 				_la = _input.LA(1);
51224 				if (_la==WITH) {
51225 					{
51226 					setState(6900);
51227 					match(WITH);
51228 					setState(6901);
51229 					windowsOptions();
51230 					setState(6906);
51231 					_errHandler.sync(this);
51232 					_la = _input.LA(1);
51233 					while (_la==COMMA_) {
51234 						{
51235 						{
51236 						setState(6902);
51237 						match(COMMA_);
51238 						setState(6903);
51239 						windowsOptions();
51240 						}
51241 						}
51242 						setState(6908);
51243 						_errHandler.sync(this);
51244 						_la = _input.LA(1);
51245 					}
51246 					}
51247 				}
51248 
51249 				}
51250 				break;
51251 			case CERTIFICATE:
51252 				enterOuterAlt(_localctx, 2);
51253 				{
51254 				setState(6911);
51255 				match(CERTIFICATE);
51256 				setState(6912);
51257 				identifier();
51258 				}
51259 				break;
51260 			case ASYMMETRIC:
51261 				enterOuterAlt(_localctx, 3);
51262 				{
51263 				setState(6913);
51264 				match(ASYMMETRIC);
51265 				setState(6914);
51266 				match(KEY);
51267 				setState(6915);
51268 				identifier();
51269 				}
51270 				break;
51271 			default:
51272 				throw new NoViableAltException(this);
51273 			}
51274 		}
51275 		catch (RecognitionException re) {
51276 			_localctx.exception = re;
51277 			_errHandler.reportError(this, re);
51278 			_errHandler.recover(this, re);
51279 		}
51280 		finally {
51281 			exitRule();
51282 		}
51283 		return _localctx;
51284 	}
51285 
51286 	public static class WindowsOptionsContext extends ParserRuleContext {
51287 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
51288 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51289 		public DatabaseNameContext databaseName() {
51290 			return getRuleContext(DatabaseNameContext.class,0);
51291 		}
51292 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
51293 		public IdentifierContext identifier() {
51294 			return getRuleContext(IdentifierContext.class,0);
51295 		}
51296 		public WindowsOptionsContext(ParserRuleContext parent, int invokingState) {
51297 			super(parent, invokingState);
51298 		}
51299 		@Override public int getRuleIndex() { return RULE_windowsOptions; }
51300 		@Override
51301 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51302 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowsOptions(this);
51303 			else return visitor.visitChildren(this);
51304 		}
51305 	}
51306 
51307 	public final WindowsOptionsContext windowsOptions() throws RecognitionException {
51308 		WindowsOptionsContext _localctx = new WindowsOptionsContext(_ctx, getState());
51309 		enterRule(_localctx, 950, RULE_windowsOptions);
51310 		try {
51311 			setState(6924);
51312 			_errHandler.sync(this);
51313 			switch (_input.LA(1)) {
51314 			case DEFAULT_DATABASE:
51315 				enterOuterAlt(_localctx, 1);
51316 				{
51317 				setState(6918);
51318 				match(DEFAULT_DATABASE);
51319 				setState(6919);
51320 				match(EQ_);
51321 				setState(6920);
51322 				databaseName();
51323 				}
51324 				break;
51325 			case DEFAULT_LANGUAGE:
51326 				enterOuterAlt(_localctx, 2);
51327 				{
51328 				setState(6921);
51329 				match(DEFAULT_LANGUAGE);
51330 				setState(6922);
51331 				match(EQ_);
51332 				setState(6923);
51333 				identifier();
51334 				}
51335 				break;
51336 			default:
51337 				throw new NoViableAltException(this);
51338 			}
51339 		}
51340 		catch (RecognitionException re) {
51341 			_localctx.exception = re;
51342 			_errHandler.reportError(this, re);
51343 			_errHandler.recover(this, re);
51344 		}
51345 		finally {
51346 			exitRule();
51347 		}
51348 		return _localctx;
51349 	}
51350 
51351 	public static class CreateLoginForAzureSQLDatabaseClauseContext extends ParserRuleContext {
51352 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
51353 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
51354 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
51355 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51356 		public List<CreateLoginForAzureSQLDatabaseOptionListContext> createLoginForAzureSQLDatabaseOptionList() {
51357 			return getRuleContexts(CreateLoginForAzureSQLDatabaseOptionListContext.class);
51358 		}
51359 		public CreateLoginForAzureSQLDatabaseOptionListContext createLoginForAzureSQLDatabaseOptionList(int i) {
51360 			return getRuleContext(CreateLoginForAzureSQLDatabaseOptionListContext.class,i);
51361 		}
51362 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
51363 		public TerminalNode COMMA_(int i) {
51364 			return getToken(SQLServerStatementParser.COMMA_, i);
51365 		}
51366 		public CreateLoginForAzureSQLDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
51367 			super(parent, invokingState);
51368 		}
51369 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSQLDatabaseClause; }
51370 		@Override
51371 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51372 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSQLDatabaseClause(this);
51373 			else return visitor.visitChildren(this);
51374 		}
51375 	}
51376 
51377 	public final CreateLoginForAzureSQLDatabaseClauseContext createLoginForAzureSQLDatabaseClause() throws RecognitionException {
51378 		CreateLoginForAzureSQLDatabaseClauseContext _localctx = new CreateLoginForAzureSQLDatabaseClauseContext(_ctx, getState());
51379 		enterRule(_localctx, 952, RULE_createLoginForAzureSQLDatabaseClause);
51380 		int _la;
51381 		try {
51382 			setState(6938);
51383 			_errHandler.sync(this);
51384 			switch (_input.LA(1)) {
51385 			case FROM:
51386 				enterOuterAlt(_localctx, 1);
51387 				{
51388 				setState(6926);
51389 				match(FROM);
51390 				setState(6927);
51391 				match(EXTERNAL);
51392 				setState(6928);
51393 				match(PROVIDER);
51394 				}
51395 				break;
51396 			case WITH:
51397 				enterOuterAlt(_localctx, 2);
51398 				{
51399 				setState(6929);
51400 				match(WITH);
51401 				setState(6930);
51402 				createLoginForAzureSQLDatabaseOptionList();
51403 				setState(6935);
51404 				_errHandler.sync(this);
51405 				_la = _input.LA(1);
51406 				while (_la==COMMA_) {
51407 					{
51408 					{
51409 					setState(6931);
51410 					match(COMMA_);
51411 					setState(6932);
51412 					createLoginForAzureSQLDatabaseOptionList();
51413 					}
51414 					}
51415 					setState(6937);
51416 					_errHandler.sync(this);
51417 					_la = _input.LA(1);
51418 				}
51419 				}
51420 				break;
51421 			default:
51422 				throw new NoViableAltException(this);
51423 			}
51424 		}
51425 		catch (RecognitionException re) {
51426 			_localctx.exception = re;
51427 			_errHandler.reportError(this, re);
51428 			_errHandler.recover(this, re);
51429 		}
51430 		finally {
51431 			exitRule();
51432 		}
51433 		return _localctx;
51434 	}
51435 
51436 	public static class CreateLoginForAzureSQLDatabaseOptionListContext extends ParserRuleContext {
51437 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
51438 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
51439 		public TerminalNode EQ_(int i) {
51440 			return getToken(SQLServerStatementParser.EQ_, i);
51441 		}
51442 		public StringLiteralsContext stringLiterals() {
51443 			return getRuleContext(StringLiteralsContext.class,0);
51444 		}
51445 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
51446 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
51447 		public SidContext sid() {
51448 			return getRuleContext(SidContext.class,0);
51449 		}
51450 		public CreateLoginForAzureSQLDatabaseOptionListContext(ParserRuleContext parent, int invokingState) {
51451 			super(parent, invokingState);
51452 		}
51453 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSQLDatabaseOptionList; }
51454 		@Override
51455 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51456 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSQLDatabaseOptionList(this);
51457 			else return visitor.visitChildren(this);
51458 		}
51459 	}
51460 
51461 	public final CreateLoginForAzureSQLDatabaseOptionListContext createLoginForAzureSQLDatabaseOptionList() throws RecognitionException {
51462 		CreateLoginForAzureSQLDatabaseOptionListContext _localctx = new CreateLoginForAzureSQLDatabaseOptionListContext(_ctx, getState());
51463 		enterRule(_localctx, 954, RULE_createLoginForAzureSQLDatabaseOptionList);
51464 		try {
51465 			enterOuterAlt(_localctx, 1);
51466 			{
51467 			setState(6940);
51468 			match(PASSWORD);
51469 			setState(6941);
51470 			match(EQ_);
51471 			setState(6942);
51472 			stringLiterals();
51473 			setState(6947);
51474 			_errHandler.sync(this);
51475 			switch ( getInterpreter().adaptivePredict(_input,805,_ctx) ) {
51476 			case 1:
51477 				{
51478 				setState(6943);
51479 				match(COMMA_);
51480 				setState(6944);
51481 				match(SID);
51482 				setState(6945);
51483 				match(EQ_);
51484 				setState(6946);
51485 				sid();
51486 				}
51487 				break;
51488 			}
51489 			}
51490 		}
51491 		catch (RecognitionException re) {
51492 			_localctx.exception = re;
51493 			_errHandler.reportError(this, re);
51494 			_errHandler.recover(this, re);
51495 		}
51496 		finally {
51497 			exitRule();
51498 		}
51499 		return _localctx;
51500 	}
51501 
51502 	public static class CreateLoginForAzureManagedInstanceClauseContext extends ParserRuleContext {
51503 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51504 		public List<AzureManagedInstanceOptionListContext> azureManagedInstanceOptionList() {
51505 			return getRuleContexts(AzureManagedInstanceOptionListContext.class);
51506 		}
51507 		public AzureManagedInstanceOptionListContext azureManagedInstanceOptionList(int i) {
51508 			return getRuleContext(AzureManagedInstanceOptionListContext.class,i);
51509 		}
51510 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
51511 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
51512 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
51513 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
51514 		public TerminalNode COMMA_(int i) {
51515 			return getToken(SQLServerStatementParser.COMMA_, i);
51516 		}
51517 		public CreateLoginForAzureManagedInstanceClauseContext(ParserRuleContext parent, int invokingState) {
51518 			super(parent, invokingState);
51519 		}
51520 		@Override public int getRuleIndex() { return RULE_createLoginForAzureManagedInstanceClause; }
51521 		@Override
51522 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51523 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureManagedInstanceClause(this);
51524 			else return visitor.visitChildren(this);
51525 		}
51526 	}
51527 
51528 	public final CreateLoginForAzureManagedInstanceClauseContext createLoginForAzureManagedInstanceClause() throws RecognitionException {
51529 		CreateLoginForAzureManagedInstanceClauseContext _localctx = new CreateLoginForAzureManagedInstanceClauseContext(_ctx, getState());
51530 		enterRule(_localctx, 956, RULE_createLoginForAzureManagedInstanceClause);
51531 		int _la;
51532 		try {
51533 			enterOuterAlt(_localctx, 1);
51534 			{
51535 			setState(6952);
51536 			_errHandler.sync(this);
51537 			_la = _input.LA(1);
51538 			if (_la==FROM) {
51539 				{
51540 				setState(6949);
51541 				match(FROM);
51542 				setState(6950);
51543 				match(EXTERNAL);
51544 				setState(6951);
51545 				match(PROVIDER);
51546 				}
51547 			}
51548 
51549 			setState(6954);
51550 			match(WITH);
51551 			setState(6955);
51552 			azureManagedInstanceOptionList();
51553 			setState(6960);
51554 			_errHandler.sync(this);
51555 			_la = _input.LA(1);
51556 			while (_la==COMMA_) {
51557 				{
51558 				{
51559 				setState(6956);
51560 				match(COMMA_);
51561 				setState(6957);
51562 				azureManagedInstanceOptionList();
51563 				}
51564 				}
51565 				setState(6962);
51566 				_errHandler.sync(this);
51567 				_la = _input.LA(1);
51568 			}
51569 			}
51570 		}
51571 		catch (RecognitionException re) {
51572 			_localctx.exception = re;
51573 			_errHandler.reportError(this, re);
51574 			_errHandler.recover(this, re);
51575 		}
51576 		finally {
51577 			exitRule();
51578 		}
51579 		return _localctx;
51580 	}
51581 
51582 	public static class AzureManagedInstanceOptionListContext extends ParserRuleContext {
51583 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
51584 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51585 		public StringLiteralsContext stringLiterals() {
51586 			return getRuleContext(StringLiteralsContext.class,0);
51587 		}
51588 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
51589 		public SidContext sid() {
51590 			return getRuleContext(SidContext.class,0);
51591 		}
51592 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
51593 		public DatabaseNameContext databaseName() {
51594 			return getRuleContext(DatabaseNameContext.class,0);
51595 		}
51596 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
51597 		public IdentifierContext identifier() {
51598 			return getRuleContext(IdentifierContext.class,0);
51599 		}
51600 		public AzureManagedInstanceOptionListContext(ParserRuleContext parent, int invokingState) {
51601 			super(parent, invokingState);
51602 		}
51603 		@Override public int getRuleIndex() { return RULE_azureManagedInstanceOptionList; }
51604 		@Override
51605 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51606 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAzureManagedInstanceOptionList(this);
51607 			else return visitor.visitChildren(this);
51608 		}
51609 	}
51610 
51611 	public final AzureManagedInstanceOptionListContext azureManagedInstanceOptionList() throws RecognitionException {
51612 		AzureManagedInstanceOptionListContext _localctx = new AzureManagedInstanceOptionListContext(_ctx, getState());
51613 		enterRule(_localctx, 958, RULE_azureManagedInstanceOptionList);
51614 		try {
51615 			setState(6975);
51616 			_errHandler.sync(this);
51617 			switch (_input.LA(1)) {
51618 			case PASSWORD:
51619 				enterOuterAlt(_localctx, 1);
51620 				{
51621 				setState(6963);
51622 				match(PASSWORD);
51623 				setState(6964);
51624 				match(EQ_);
51625 				setState(6965);
51626 				stringLiterals();
51627 				}
51628 				break;
51629 			case SID:
51630 				enterOuterAlt(_localctx, 2);
51631 				{
51632 				setState(6966);
51633 				match(SID);
51634 				setState(6967);
51635 				match(EQ_);
51636 				setState(6968);
51637 				sid();
51638 				}
51639 				break;
51640 			case DEFAULT_DATABASE:
51641 				enterOuterAlt(_localctx, 3);
51642 				{
51643 				setState(6969);
51644 				match(DEFAULT_DATABASE);
51645 				setState(6970);
51646 				match(EQ_);
51647 				setState(6971);
51648 				databaseName();
51649 				}
51650 				break;
51651 			case DEFAULT_LANGUAGE:
51652 				enterOuterAlt(_localctx, 4);
51653 				{
51654 				setState(6972);
51655 				match(DEFAULT_LANGUAGE);
51656 				setState(6973);
51657 				match(EQ_);
51658 				setState(6974);
51659 				identifier();
51660 				}
51661 				break;
51662 			default:
51663 				throw new NoViableAltException(this);
51664 			}
51665 		}
51666 		catch (RecognitionException re) {
51667 			_localctx.exception = re;
51668 			_errHandler.reportError(this, re);
51669 			_errHandler.recover(this, re);
51670 		}
51671 		finally {
51672 			exitRule();
51673 		}
51674 		return _localctx;
51675 	}
51676 
51677 	public static class CreateLoginForAzureSynapseAnalyticsClauseContext extends ParserRuleContext {
51678 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51679 		public CreateLoginForAzureSynapseAnalyticsOptionListContext createLoginForAzureSynapseAnalyticsOptionList() {
51680 			return getRuleContext(CreateLoginForAzureSynapseAnalyticsOptionListContext.class,0);
51681 		}
51682 		public CreateLoginForAzureSynapseAnalyticsClauseContext(ParserRuleContext parent, int invokingState) {
51683 			super(parent, invokingState);
51684 		}
51685 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSynapseAnalyticsClause; }
51686 		@Override
51687 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51688 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSynapseAnalyticsClause(this);
51689 			else return visitor.visitChildren(this);
51690 		}
51691 	}
51692 
51693 	public final CreateLoginForAzureSynapseAnalyticsClauseContext createLoginForAzureSynapseAnalyticsClause() throws RecognitionException {
51694 		CreateLoginForAzureSynapseAnalyticsClauseContext _localctx = new CreateLoginForAzureSynapseAnalyticsClauseContext(_ctx, getState());
51695 		enterRule(_localctx, 960, RULE_createLoginForAzureSynapseAnalyticsClause);
51696 		try {
51697 			enterOuterAlt(_localctx, 1);
51698 			{
51699 			setState(6977);
51700 			match(WITH);
51701 			setState(6978);
51702 			createLoginForAzureSynapseAnalyticsOptionList();
51703 			}
51704 		}
51705 		catch (RecognitionException re) {
51706 			_localctx.exception = re;
51707 			_errHandler.reportError(this, re);
51708 			_errHandler.recover(this, re);
51709 		}
51710 		finally {
51711 			exitRule();
51712 		}
51713 		return _localctx;
51714 	}
51715 
51716 	public static class CreateLoginForAzureSynapseAnalyticsOptionListContext extends ParserRuleContext {
51717 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
51718 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
51719 		public TerminalNode EQ_(int i) {
51720 			return getToken(SQLServerStatementParser.EQ_, i);
51721 		}
51722 		public StringLiteralsContext stringLiterals() {
51723 			return getRuleContext(StringLiteralsContext.class,0);
51724 		}
51725 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
51726 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
51727 		public SidContext sid() {
51728 			return getRuleContext(SidContext.class,0);
51729 		}
51730 		public CreateLoginForAzureSynapseAnalyticsOptionListContext(ParserRuleContext parent, int invokingState) {
51731 			super(parent, invokingState);
51732 		}
51733 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSynapseAnalyticsOptionList; }
51734 		@Override
51735 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51736 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSynapseAnalyticsOptionList(this);
51737 			else return visitor.visitChildren(this);
51738 		}
51739 	}
51740 
51741 	public final CreateLoginForAzureSynapseAnalyticsOptionListContext createLoginForAzureSynapseAnalyticsOptionList() throws RecognitionException {
51742 		CreateLoginForAzureSynapseAnalyticsOptionListContext _localctx = new CreateLoginForAzureSynapseAnalyticsOptionListContext(_ctx, getState());
51743 		enterRule(_localctx, 962, RULE_createLoginForAzureSynapseAnalyticsOptionList);
51744 		int _la;
51745 		try {
51746 			enterOuterAlt(_localctx, 1);
51747 			{
51748 			setState(6980);
51749 			match(PASSWORD);
51750 			setState(6981);
51751 			match(EQ_);
51752 			setState(6982);
51753 			stringLiterals();
51754 			setState(6987);
51755 			_errHandler.sync(this);
51756 			_la = _input.LA(1);
51757 			if (_la==COMMA_) {
51758 				{
51759 				setState(6983);
51760 				match(COMMA_);
51761 				setState(6984);
51762 				match(SID);
51763 				setState(6985);
51764 				match(EQ_);
51765 				setState(6986);
51766 				sid();
51767 				}
51768 			}
51769 
51770 			}
51771 		}
51772 		catch (RecognitionException re) {
51773 			_localctx.exception = re;
51774 			_errHandler.reportError(this, re);
51775 			_errHandler.recover(this, re);
51776 		}
51777 		finally {
51778 			exitRule();
51779 		}
51780 		return _localctx;
51781 	}
51782 
51783 	public static class CreateLoginForAnalyticsPlatformSystemClauseContext extends ParserRuleContext {
51784 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51785 		public CreateLoginForAnalyticsPlatformSystemOptionListContext createLoginForAnalyticsPlatformSystemOptionList() {
51786 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemOptionListContext.class,0);
51787 		}
51788 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
51789 		public TerminalNode WINDOWS() { return getToken(SQLServerStatementParser.WINDOWS, 0); }
51790 		public CreateLoginForAnalyticsPlatformSystemClauseContext(ParserRuleContext parent, int invokingState) {
51791 			super(parent, invokingState);
51792 		}
51793 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemClause; }
51794 		@Override
51795 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51796 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemClause(this);
51797 			else return visitor.visitChildren(this);
51798 		}
51799 	}
51800 
51801 	public final CreateLoginForAnalyticsPlatformSystemClauseContext createLoginForAnalyticsPlatformSystemClause() throws RecognitionException {
51802 		CreateLoginForAnalyticsPlatformSystemClauseContext _localctx = new CreateLoginForAnalyticsPlatformSystemClauseContext(_ctx, getState());
51803 		enterRule(_localctx, 964, RULE_createLoginForAnalyticsPlatformSystemClause);
51804 		try {
51805 			setState(6993);
51806 			_errHandler.sync(this);
51807 			switch (_input.LA(1)) {
51808 			case WITH:
51809 				enterOuterAlt(_localctx, 1);
51810 				{
51811 				setState(6989);
51812 				match(WITH);
51813 				setState(6990);
51814 				createLoginForAnalyticsPlatformSystemOptionList();
51815 				}
51816 				break;
51817 			case FROM:
51818 				enterOuterAlt(_localctx, 2);
51819 				{
51820 				setState(6991);
51821 				match(FROM);
51822 				setState(6992);
51823 				match(WINDOWS);
51824 				}
51825 				break;
51826 			default:
51827 				throw new NoViableAltException(this);
51828 			}
51829 		}
51830 		catch (RecognitionException re) {
51831 			_localctx.exception = re;
51832 			_errHandler.reportError(this, re);
51833 			_errHandler.recover(this, re);
51834 		}
51835 		finally {
51836 			exitRule();
51837 		}
51838 		return _localctx;
51839 	}
51840 
51841 	public static class CreateLoginForAnalyticsPlatformSystemOptionListContext extends ParserRuleContext {
51842 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
51843 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51844 		public StringLiteralsContext stringLiterals() {
51845 			return getRuleContext(StringLiteralsContext.class,0);
51846 		}
51847 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
51848 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
51849 		public TerminalNode COMMA_(int i) {
51850 			return getToken(SQLServerStatementParser.COMMA_, i);
51851 		}
51852 		public List<CreateLoginForAnalyticsPlatformSystemOptionListClauseContext> createLoginForAnalyticsPlatformSystemOptionListClause() {
51853 			return getRuleContexts(CreateLoginForAnalyticsPlatformSystemOptionListClauseContext.class);
51854 		}
51855 		public CreateLoginForAnalyticsPlatformSystemOptionListClauseContext createLoginForAnalyticsPlatformSystemOptionListClause(int i) {
51856 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemOptionListClauseContext.class,i);
51857 		}
51858 		public CreateLoginForAnalyticsPlatformSystemOptionListContext(ParserRuleContext parent, int invokingState) {
51859 			super(parent, invokingState);
51860 		}
51861 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemOptionList; }
51862 		@Override
51863 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51864 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemOptionList(this);
51865 			else return visitor.visitChildren(this);
51866 		}
51867 	}
51868 
51869 	public final CreateLoginForAnalyticsPlatformSystemOptionListContext createLoginForAnalyticsPlatformSystemOptionList() throws RecognitionException {
51870 		CreateLoginForAnalyticsPlatformSystemOptionListContext _localctx = new CreateLoginForAnalyticsPlatformSystemOptionListContext(_ctx, getState());
51871 		enterRule(_localctx, 966, RULE_createLoginForAnalyticsPlatformSystemOptionList);
51872 		int _la;
51873 		try {
51874 			enterOuterAlt(_localctx, 1);
51875 			{
51876 			setState(6995);
51877 			match(PASSWORD);
51878 			setState(6996);
51879 			match(EQ_);
51880 			setState(6997);
51881 			stringLiterals();
51882 			setState(6999);
51883 			_errHandler.sync(this);
51884 			_la = _input.LA(1);
51885 			if (_la==MUST_CHANGE) {
51886 				{
51887 				setState(6998);
51888 				match(MUST_CHANGE);
51889 				}
51890 			}
51891 
51892 			setState(7010);
51893 			_errHandler.sync(this);
51894 			_la = _input.LA(1);
51895 			if (_la==COMMA_) {
51896 				{
51897 				setState(7001);
51898 				match(COMMA_);
51899 				setState(7002);
51900 				createLoginForAnalyticsPlatformSystemOptionListClause();
51901 				setState(7007);
51902 				_errHandler.sync(this);
51903 				_la = _input.LA(1);
51904 				while (_la==COMMA_) {
51905 					{
51906 					{
51907 					setState(7003);
51908 					match(COMMA_);
51909 					setState(7004);
51910 					createLoginForAnalyticsPlatformSystemOptionListClause();
51911 					}
51912 					}
51913 					setState(7009);
51914 					_errHandler.sync(this);
51915 					_la = _input.LA(1);
51916 				}
51917 				}
51918 			}
51919 
51920 			}
51921 		}
51922 		catch (RecognitionException re) {
51923 			_localctx.exception = re;
51924 			_errHandler.reportError(this, re);
51925 			_errHandler.recover(this, re);
51926 		}
51927 		finally {
51928 			exitRule();
51929 		}
51930 		return _localctx;
51931 	}
51932 
51933 	public static class CreateLoginForAnalyticsPlatformSystemOptionListClauseContext extends ParserRuleContext {
51934 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
51935 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51936 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
51937 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
51938 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
51939 		public CreateLoginForAnalyticsPlatformSystemOptionListClauseContext(ParserRuleContext parent, int invokingState) {
51940 			super(parent, invokingState);
51941 		}
51942 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemOptionListClause; }
51943 		@Override
51944 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51945 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemOptionListClause(this);
51946 			else return visitor.visitChildren(this);
51947 		}
51948 	}
51949 
51950 	public final CreateLoginForAnalyticsPlatformSystemOptionListClauseContext createLoginForAnalyticsPlatformSystemOptionListClause() throws RecognitionException {
51951 		CreateLoginForAnalyticsPlatformSystemOptionListClauseContext _localctx = new CreateLoginForAnalyticsPlatformSystemOptionListClauseContext(_ctx, getState());
51952 		enterRule(_localctx, 968, RULE_createLoginForAnalyticsPlatformSystemOptionListClause);
51953 		int _la;
51954 		try {
51955 			setState(7018);
51956 			_errHandler.sync(this);
51957 			switch (_input.LA(1)) {
51958 			case CHECK_EXPIRATION:
51959 				enterOuterAlt(_localctx, 1);
51960 				{
51961 				setState(7012);
51962 				match(CHECK_EXPIRATION);
51963 				setState(7013);
51964 				match(EQ_);
51965 				setState(7014);
51966 				_la = _input.LA(1);
51967 				if ( !(_la==ON || _la==OFF) ) {
51968 				_errHandler.recoverInline(this);
51969 				}
51970 				else {
51971 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51972 					_errHandler.reportMatch(this);
51973 					consume();
51974 				}
51975 				}
51976 				break;
51977 			case CHECK_POLICY:
51978 				enterOuterAlt(_localctx, 2);
51979 				{
51980 				setState(7015);
51981 				match(CHECK_POLICY);
51982 				setState(7016);
51983 				match(EQ_);
51984 				setState(7017);
51985 				_la = _input.LA(1);
51986 				if ( !(_la==ON || _la==OFF) ) {
51987 				_errHandler.recoverInline(this);
51988 				}
51989 				else {
51990 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51991 					_errHandler.reportMatch(this);
51992 					consume();
51993 				}
51994 				}
51995 				break;
51996 			default:
51997 				throw new NoViableAltException(this);
51998 			}
51999 		}
52000 		catch (RecognitionException re) {
52001 			_localctx.exception = re;
52002 			_errHandler.reportError(this, re);
52003 			_errHandler.recover(this, re);
52004 		}
52005 		finally {
52006 			exitRule();
52007 		}
52008 		return _localctx;
52009 	}
52010 
52011 	public static class DropLoginContext extends ParserRuleContext {
52012 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
52013 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
52014 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
52015 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
52016 		}
52017 		public DropLoginContext(ParserRuleContext parent, int invokingState) {
52018 			super(parent, invokingState);
52019 		}
52020 		@Override public int getRuleIndex() { return RULE_dropLogin; }
52021 		@Override
52022 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52023 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropLogin(this);
52024 			else return visitor.visitChildren(this);
52025 		}
52026 	}
52027 
52028 	public final DropLoginContext dropLogin() throws RecognitionException {
52029 		DropLoginContext _localctx = new DropLoginContext(_ctx, getState());
52030 		enterRule(_localctx, 970, RULE_dropLogin);
52031 		try {
52032 			enterOuterAlt(_localctx, 1);
52033 			{
52034 			setState(7020);
52035 			match(DROP);
52036 			setState(7021);
52037 			match(LOGIN);
52038 			setState(7022);
52039 			ignoredNameIdentifier();
52040 			}
52041 		}
52042 		catch (RecognitionException re) {
52043 			_localctx.exception = re;
52044 			_errHandler.reportError(this, re);
52045 			_errHandler.recover(this, re);
52046 		}
52047 		finally {
52048 			exitRule();
52049 		}
52050 		return _localctx;
52051 	}
52052 
52053 	public static class AlterLoginContext extends ParserRuleContext {
52054 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
52055 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
52056 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
52057 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
52058 		}
52059 		public StatusOptionClauseContext statusOptionClause() {
52060 			return getRuleContext(StatusOptionClauseContext.class,0);
52061 		}
52062 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52063 		public List<SetOptionClauseContext> setOptionClause() {
52064 			return getRuleContexts(SetOptionClauseContext.class);
52065 		}
52066 		public SetOptionClauseContext setOptionClause(int i) {
52067 			return getRuleContext(SetOptionClauseContext.class,i);
52068 		}
52069 		public CryptographicCredentialsOptionClauseContext cryptographicCredentialsOptionClause() {
52070 			return getRuleContext(CryptographicCredentialsOptionClauseContext.class,0);
52071 		}
52072 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
52073 		public TerminalNode COMMA_(int i) {
52074 			return getToken(SQLServerStatementParser.COMMA_, i);
52075 		}
52076 		public AlterLoginContext(ParserRuleContext parent, int invokingState) {
52077 			super(parent, invokingState);
52078 		}
52079 		@Override public int getRuleIndex() { return RULE_alterLogin; }
52080 		@Override
52081 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52082 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterLogin(this);
52083 			else return visitor.visitChildren(this);
52084 		}
52085 	}
52086 
52087 	public final AlterLoginContext alterLogin() throws RecognitionException {
52088 		AlterLoginContext _localctx = new AlterLoginContext(_ctx, getState());
52089 		enterRule(_localctx, 972, RULE_alterLogin);
52090 		int _la;
52091 		try {
52092 			enterOuterAlt(_localctx, 1);
52093 			{
52094 			setState(7024);
52095 			match(ALTER);
52096 			setState(7025);
52097 			match(LOGIN);
52098 			setState(7026);
52099 			ignoredNameIdentifier();
52100 			setState(7038);
52101 			_errHandler.sync(this);
52102 			switch (_input.LA(1)) {
52103 			case ENABLE:
52104 			case DISABLE:
52105 				{
52106 				setState(7027);
52107 				statusOptionClause();
52108 				}
52109 				break;
52110 			case WITH:
52111 				{
52112 				setState(7028);
52113 				match(WITH);
52114 				setState(7029);
52115 				setOptionClause();
52116 				setState(7034);
52117 				_errHandler.sync(this);
52118 				_la = _input.LA(1);
52119 				while (_la==COMMA_) {
52120 					{
52121 					{
52122 					setState(7030);
52123 					match(COMMA_);
52124 					setState(7031);
52125 					setOptionClause();
52126 					}
52127 					}
52128 					setState(7036);
52129 					_errHandler.sync(this);
52130 					_la = _input.LA(1);
52131 				}
52132 				}
52133 				break;
52134 			case DROP:
52135 			case ADD:
52136 				{
52137 				setState(7037);
52138 				cryptographicCredentialsOptionClause();
52139 				}
52140 				break;
52141 			default:
52142 				throw new NoViableAltException(this);
52143 			}
52144 			}
52145 		}
52146 		catch (RecognitionException re) {
52147 			_localctx.exception = re;
52148 			_errHandler.reportError(this, re);
52149 			_errHandler.recover(this, re);
52150 		}
52151 		finally {
52152 			exitRule();
52153 		}
52154 		return _localctx;
52155 	}
52156 
52157 	public static class StatusOptionClauseContext extends ParserRuleContext {
52158 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
52159 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
52160 		public StatusOptionClauseContext(ParserRuleContext parent, int invokingState) {
52161 			super(parent, invokingState);
52162 		}
52163 		@Override public int getRuleIndex() { return RULE_statusOptionClause; }
52164 		@Override
52165 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52166 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatusOptionClause(this);
52167 			else return visitor.visitChildren(this);
52168 		}
52169 	}
52170 
52171 	public final StatusOptionClauseContext statusOptionClause() throws RecognitionException {
52172 		StatusOptionClauseContext _localctx = new StatusOptionClauseContext(_ctx, getState());
52173 		enterRule(_localctx, 974, RULE_statusOptionClause);
52174 		int _la;
52175 		try {
52176 			enterOuterAlt(_localctx, 1);
52177 			{
52178 			setState(7040);
52179 			_la = _input.LA(1);
52180 			if ( !(_la==ENABLE || _la==DISABLE) ) {
52181 			_errHandler.recoverInline(this);
52182 			}
52183 			else {
52184 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
52185 				_errHandler.reportMatch(this);
52186 				consume();
52187 			}
52188 			}
52189 		}
52190 		catch (RecognitionException re) {
52191 			_localctx.exception = re;
52192 			_errHandler.reportError(this, re);
52193 			_errHandler.recover(this, re);
52194 		}
52195 		finally {
52196 			exitRule();
52197 		}
52198 		return _localctx;
52199 	}
52200 
52201 	public static class SetOptionClauseContext extends ParserRuleContext {
52202 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
52203 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
52204 		public TerminalNode EQ_(int i) {
52205 			return getToken(SQLServerStatementParser.EQ_, i);
52206 		}
52207 		public List<StringLiteralsContext> stringLiterals() {
52208 			return getRuleContexts(StringLiteralsContext.class);
52209 		}
52210 		public StringLiteralsContext stringLiterals(int i) {
52211 			return getRuleContext(StringLiteralsContext.class,i);
52212 		}
52213 		public HashedPasswordContext hashedPassword() {
52214 			return getRuleContext(HashedPasswordContext.class,0);
52215 		}
52216 		public TerminalNode HASHED() { return getToken(SQLServerStatementParser.HASHED, 0); }
52217 		public TerminalNode OLD_PASSWORD() { return getToken(SQLServerStatementParser.OLD_PASSWORD, 0); }
52218 		public List<PasswordOptionClauseContext> passwordOptionClause() {
52219 			return getRuleContexts(PasswordOptionClauseContext.class);
52220 		}
52221 		public PasswordOptionClauseContext passwordOptionClause(int i) {
52222 			return getRuleContext(PasswordOptionClauseContext.class,i);
52223 		}
52224 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
52225 		public DatabaseNameContext databaseName() {
52226 			return getRuleContext(DatabaseNameContext.class,0);
52227 		}
52228 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
52229 		public IdentifierContext identifier() {
52230 			return getRuleContext(IdentifierContext.class,0);
52231 		}
52232 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
52233 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
52234 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
52235 		}
52236 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
52237 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
52238 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
52239 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
52240 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
52241 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
52242 		public SetOptionClauseContext(ParserRuleContext parent, int invokingState) {
52243 			super(parent, invokingState);
52244 		}
52245 		@Override public int getRuleIndex() { return RULE_setOptionClause; }
52246 		@Override
52247 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52248 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetOptionClause(this);
52249 			else return visitor.visitChildren(this);
52250 		}
52251 	}
52252 
52253 	public final SetOptionClauseContext setOptionClause() throws RecognitionException {
52254 		SetOptionClauseContext _localctx = new SetOptionClauseContext(_ctx, getState());
52255 		enterRule(_localctx, 976, RULE_setOptionClause);
52256 		int _la;
52257 		try {
52258 			setState(7079);
52259 			_errHandler.sync(this);
52260 			switch (_input.LA(1)) {
52261 			case PASSWORD:
52262 				enterOuterAlt(_localctx, 1);
52263 				{
52264 				setState(7042);
52265 				match(PASSWORD);
52266 				setState(7043);
52267 				match(EQ_);
52268 				setState(7048);
52269 				_errHandler.sync(this);
52270 				switch (_input.LA(1)) {
52271 				case STRING_:
52272 				case NCHAR_TEXT:
52273 					{
52274 					setState(7044);
52275 					stringLiterals();
52276 					}
52277 					break;
52278 				case HEX_DIGIT_:
52279 					{
52280 					setState(7045);
52281 					hashedPassword();
52282 					setState(7046);
52283 					match(HASHED);
52284 					}
52285 					break;
52286 				default:
52287 					throw new NoViableAltException(this);
52288 				}
52289 				setState(7057);
52290 				_errHandler.sync(this);
52291 				switch (_input.LA(1)) {
52292 				case OLD_PASSWORD:
52293 					{
52294 					setState(7050);
52295 					match(OLD_PASSWORD);
52296 					setState(7051);
52297 					match(EQ_);
52298 					setState(7052);
52299 					stringLiterals();
52300 					}
52301 					break;
52302 				case MUST_CHANGE:
52303 				case UNLOCK:
52304 					{
52305 					setState(7053);
52306 					passwordOptionClause();
52307 					setState(7055);
52308 					_errHandler.sync(this);
52309 					_la = _input.LA(1);
52310 					if (_la==MUST_CHANGE || _la==UNLOCK) {
52311 						{
52312 						setState(7054);
52313 						passwordOptionClause();
52314 						}
52315 					}
52316 
52317 					}
52318 					break;
52319 				case EOF:
52320 				case COMMA_:
52321 				case SEMI_:
52322 					break;
52323 				default:
52324 					break;
52325 				}
52326 				}
52327 				break;
52328 			case DEFAULT_DATABASE:
52329 				enterOuterAlt(_localctx, 2);
52330 				{
52331 				setState(7059);
52332 				match(DEFAULT_DATABASE);
52333 				setState(7060);
52334 				match(EQ_);
52335 				setState(7061);
52336 				databaseName();
52337 				}
52338 				break;
52339 			case DEFAULT_LANGUAGE:
52340 				enterOuterAlt(_localctx, 3);
52341 				{
52342 				setState(7062);
52343 				match(DEFAULT_LANGUAGE);
52344 				setState(7063);
52345 				match(EQ_);
52346 				setState(7064);
52347 				identifier();
52348 				}
52349 				break;
52350 			case NAME:
52351 				enterOuterAlt(_localctx, 4);
52352 				{
52353 				setState(7065);
52354 				match(NAME);
52355 				setState(7066);
52356 				match(EQ_);
52357 				setState(7067);
52358 				ignoredNameIdentifier();
52359 				}
52360 				break;
52361 			case CHECK_POLICY:
52362 				enterOuterAlt(_localctx, 5);
52363 				{
52364 				setState(7068);
52365 				match(CHECK_POLICY);
52366 				setState(7069);
52367 				match(EQ_);
52368 				setState(7070);
52369 				_la = _input.LA(1);
52370 				if ( !(_la==ON || _la==OFF) ) {
52371 				_errHandler.recoverInline(this);
52372 				}
52373 				else {
52374 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
52375 					_errHandler.reportMatch(this);
52376 					consume();
52377 				}
52378 				}
52379 				break;
52380 			case CHECK_EXPIRATION:
52381 				enterOuterAlt(_localctx, 6);
52382 				{
52383 				setState(7071);
52384 				match(CHECK_EXPIRATION);
52385 				setState(7072);
52386 				match(EQ_);
52387 				setState(7073);
52388 				_la = _input.LA(1);
52389 				if ( !(_la==ON || _la==OFF) ) {
52390 				_errHandler.recoverInline(this);
52391 				}
52392 				else {
52393 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
52394 					_errHandler.reportMatch(this);
52395 					consume();
52396 				}
52397 				}
52398 				break;
52399 			case CREDENTIAL:
52400 				enterOuterAlt(_localctx, 7);
52401 				{
52402 				setState(7074);
52403 				match(CREDENTIAL);
52404 				setState(7075);
52405 				match(EQ_);
52406 				setState(7076);
52407 				identifier();
52408 				}
52409 				break;
52410 			case NO:
52411 				enterOuterAlt(_localctx, 8);
52412 				{
52413 				setState(7077);
52414 				match(NO);
52415 				setState(7078);
52416 				match(CREDENTIAL);
52417 				}
52418 				break;
52419 			default:
52420 				throw new NoViableAltException(this);
52421 			}
52422 		}
52423 		catch (RecognitionException re) {
52424 			_localctx.exception = re;
52425 			_errHandler.reportError(this, re);
52426 			_errHandler.recover(this, re);
52427 		}
52428 		finally {
52429 			exitRule();
52430 		}
52431 		return _localctx;
52432 	}
52433 
52434 	public static class PasswordOptionClauseContext extends ParserRuleContext {
52435 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
52436 		public TerminalNode UNLOCK() { return getToken(SQLServerStatementParser.UNLOCK, 0); }
52437 		public PasswordOptionClauseContext(ParserRuleContext parent, int invokingState) {
52438 			super(parent, invokingState);
52439 		}
52440 		@Override public int getRuleIndex() { return RULE_passwordOptionClause; }
52441 		@Override
52442 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52443 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPasswordOptionClause(this);
52444 			else return visitor.visitChildren(this);
52445 		}
52446 	}
52447 
52448 	public final PasswordOptionClauseContext passwordOptionClause() throws RecognitionException {
52449 		PasswordOptionClauseContext _localctx = new PasswordOptionClauseContext(_ctx, getState());
52450 		enterRule(_localctx, 978, RULE_passwordOptionClause);
52451 		int _la;
52452 		try {
52453 			enterOuterAlt(_localctx, 1);
52454 			{
52455 			setState(7081);
52456 			_la = _input.LA(1);
52457 			if ( !(_la==MUST_CHANGE || _la==UNLOCK) ) {
52458 			_errHandler.recoverInline(this);
52459 			}
52460 			else {
52461 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
52462 				_errHandler.reportMatch(this);
52463 				consume();
52464 			}
52465 			}
52466 		}
52467 		catch (RecognitionException re) {
52468 			_localctx.exception = re;
52469 			_errHandler.reportError(this, re);
52470 			_errHandler.recover(this, re);
52471 		}
52472 		finally {
52473 			exitRule();
52474 		}
52475 		return _localctx;
52476 	}
52477 
52478 	public static class CryptographicCredentialsOptionClauseContext extends ParserRuleContext {
52479 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
52480 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
52481 		public IdentifierContext identifier() {
52482 			return getRuleContext(IdentifierContext.class,0);
52483 		}
52484 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
52485 		public CryptographicCredentialsOptionClauseContext(ParserRuleContext parent, int invokingState) {
52486 			super(parent, invokingState);
52487 		}
52488 		@Override public int getRuleIndex() { return RULE_cryptographicCredentialsOptionClause; }
52489 		@Override
52490 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52491 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCryptographicCredentialsOptionClause(this);
52492 			else return visitor.visitChildren(this);
52493 		}
52494 	}
52495 
52496 	public final CryptographicCredentialsOptionClauseContext cryptographicCredentialsOptionClause() throws RecognitionException {
52497 		CryptographicCredentialsOptionClauseContext _localctx = new CryptographicCredentialsOptionClauseContext(_ctx, getState());
52498 		enterRule(_localctx, 980, RULE_cryptographicCredentialsOptionClause);
52499 		try {
52500 			setState(7089);
52501 			_errHandler.sync(this);
52502 			switch (_input.LA(1)) {
52503 			case ADD:
52504 				enterOuterAlt(_localctx, 1);
52505 				{
52506 				setState(7083);
52507 				match(ADD);
52508 				setState(7084);
52509 				match(CREDENTIAL);
52510 				setState(7085);
52511 				identifier();
52512 				}
52513 				break;
52514 			case DROP:
52515 				enterOuterAlt(_localctx, 2);
52516 				{
52517 				setState(7086);
52518 				match(DROP);
52519 				setState(7087);
52520 				match(CREDENTIAL);
52521 				setState(7088);
52522 				identifier();
52523 				}
52524 				break;
52525 			default:
52526 				throw new NoViableAltException(this);
52527 			}
52528 		}
52529 		catch (RecognitionException re) {
52530 			_localctx.exception = re;
52531 			_errHandler.reportError(this, re);
52532 			_errHandler.recover(this, re);
52533 		}
52534 		finally {
52535 			exitRule();
52536 		}
52537 		return _localctx;
52538 	}
52539 
52540 	public static class RevertContext extends ParserRuleContext {
52541 		public TerminalNode REVERT() { return getToken(SQLServerStatementParser.REVERT, 0); }
52542 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52543 		public TerminalNode COOKIE() { return getToken(SQLServerStatementParser.COOKIE, 0); }
52544 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
52545 		public VariableNameContext variableName() {
52546 			return getRuleContext(VariableNameContext.class,0);
52547 		}
52548 		public RevertContext(ParserRuleContext parent, int invokingState) {
52549 			super(parent, invokingState);
52550 		}
52551 		@Override public int getRuleIndex() { return RULE_revert; }
52552 		@Override
52553 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52554 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevert(this);
52555 			else return visitor.visitChildren(this);
52556 		}
52557 	}
52558 
52559 	public final RevertContext revert() throws RecognitionException {
52560 		RevertContext _localctx = new RevertContext(_ctx, getState());
52561 		enterRule(_localctx, 982, RULE_revert);
52562 		int _la;
52563 		try {
52564 			enterOuterAlt(_localctx, 1);
52565 			{
52566 			setState(7091);
52567 			match(REVERT);
52568 			setState(7096);
52569 			_errHandler.sync(this);
52570 			_la = _input.LA(1);
52571 			if (_la==WITH) {
52572 				{
52573 				setState(7092);
52574 				match(WITH);
52575 				setState(7093);
52576 				match(COOKIE);
52577 				setState(7094);
52578 				match(EQ_);
52579 				setState(7095);
52580 				variableName();
52581 				}
52582 			}
52583 
52584 			}
52585 		}
52586 		catch (RecognitionException re) {
52587 			_localctx.exception = re;
52588 			_errHandler.reportError(this, re);
52589 			_errHandler.recover(this, re);
52590 		}
52591 		finally {
52592 			exitRule();
52593 		}
52594 		return _localctx;
52595 	}
52596 
52597 	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
52598 		switch (ruleIndex) {
52599 		case 49:
52600 			return expr_sempred((ExprContext)_localctx, predIndex);
52601 		case 54:
52602 			return booleanPrimary_sempred((BooleanPrimaryContext)_localctx, predIndex);
52603 		case 57:
52604 			return bitExpr_sempred((BitExprContext)_localctx, predIndex);
52605 		case 58:
52606 			return simpleExpr_sempred((SimpleExprContext)_localctx, predIndex);
52607 		}
52608 		return true;
52609 	}
52610 	private boolean expr_sempred(ExprContext _localctx, int predIndex) {
52611 		switch (predIndex) {
52612 		case 0:
52613 			return precpred(_ctx, 5);
52614 		case 1:
52615 			return precpred(_ctx, 4);
52616 		case 2:
52617 			return precpred(_ctx, 3);
52618 		}
52619 		return true;
52620 	}
52621 	private boolean booleanPrimary_sempred(BooleanPrimaryContext _localctx, int predIndex) {
52622 		switch (predIndex) {
52623 		case 3:
52624 			return precpred(_ctx, 5);
52625 		case 4:
52626 			return precpred(_ctx, 4);
52627 		case 5:
52628 			return precpred(_ctx, 3);
52629 		case 6:
52630 			return precpred(_ctx, 2);
52631 		}
52632 		return true;
52633 	}
52634 	private boolean bitExpr_sempred(BitExprContext _localctx, int predIndex) {
52635 		switch (predIndex) {
52636 		case 7:
52637 			return precpred(_ctx, 11);
52638 		case 8:
52639 			return precpred(_ctx, 10);
52640 		case 9:
52641 			return precpred(_ctx, 9);
52642 		case 10:
52643 			return precpred(_ctx, 8);
52644 		case 11:
52645 			return precpred(_ctx, 7);
52646 		case 12:
52647 			return precpred(_ctx, 6);
52648 		case 13:
52649 			return precpred(_ctx, 5);
52650 		case 14:
52651 			return precpred(_ctx, 4);
52652 		case 15:
52653 			return precpred(_ctx, 3);
52654 		case 16:
52655 			return precpred(_ctx, 2);
52656 		}
52657 		return true;
52658 	}
52659 	private boolean simpleExpr_sempred(SimpleExprContext _localctx, int predIndex) {
52660 		switch (predIndex) {
52661 		case 17:
52662 			return precpred(_ctx, 7);
52663 		}
52664 		return true;
52665 	}
52666 
52667 	private static final String _serializedATNSegment0 =
52668 		"\u0004\u0001\u02d1\u1bbb\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
52669 		"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
52670 		"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
52671 		"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
52672 		"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
52673 		"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
52674 		"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
52675 		"\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
52676 		"\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+
52677 		"\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+
52678 		"\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+
52679 		"\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+
52680 		"\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+
52681 		",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+
52682 		"1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+
52683 		"6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+
52684 		";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+
52685 		"@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+
52686 		"E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
52687 		"J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
52688 		"O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
52689 		"T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+
52690 		"Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+
52691 		"^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+
52692 		"c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+
52693 		"h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+
52694 		"m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+
52695 		"r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+
52696 		"w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+
52697 		"|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+
52698 		"\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+
52699 		"\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+
52700 		"\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+
52701 		"\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+
52702 		"\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+
52703 		"\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+
52704 		"\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+
52705 		"\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+
52706 		"\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+
52707 		"\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+
52708 		"\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+
52709 		"\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+
52710 		"\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+
52711 		"\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+
52712 		"\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+
52713 		"\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+
52714 		"\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+
52715 		"\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+
52716 		"\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+
52717 		"\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+
52718 		"\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+
52719 		"\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+
52720 		"\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+
52721 		"\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+
52722 		"\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+
52723 		"\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+
52724 		"\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+
52725 		"\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+
52726 		"\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+
52727 		"\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+
52728 		"\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+
52729 		"\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+
52730 		"\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+
52731 		"\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007"+
52732 		"\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007"+
52733 		"\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007"+
52734 		"\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee\u0002\u00ef\u0007"+
52735 		"\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1\u0002\u00f2\u0007"+
52736 		"\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4\u0002\u00f5\u0007"+
52737 		"\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7\u0002\u00f8\u0007"+
52738 		"\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa\u0002\u00fb\u0007"+
52739 		"\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd\u0002\u00fe\u0007"+
52740 		"\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100\u0002\u0101\u0007"+
52741 		"\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103\u0002\u0104\u0007"+
52742 		"\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106\u0002\u0107\u0007"+
52743 		"\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109\u0002\u010a\u0007"+
52744 		"\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c\u0002\u010d\u0007"+
52745 		"\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f\u0002\u0110\u0007"+
52746 		"\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112\u0002\u0113\u0007"+
52747 		"\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115\u0002\u0116\u0007"+
52748 		"\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118\u0002\u0119\u0007"+
52749 		"\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b\u0002\u011c\u0007"+
52750 		"\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e\u0002\u011f\u0007"+
52751 		"\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121\u0002\u0122\u0007"+
52752 		"\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124\u0002\u0125\u0007"+
52753 		"\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127\u0002\u0128\u0007"+
52754 		"\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a\u0002\u012b\u0007"+
52755 		"\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d\u0002\u012e\u0007"+
52756 		"\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130\u0002\u0131\u0007"+
52757 		"\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133\u0002\u0134\u0007"+
52758 		"\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136\u0002\u0137\u0007"+
52759 		"\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139\u0002\u013a\u0007"+
52760 		"\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c\u0002\u013d\u0007"+
52761 		"\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f\u0002\u0140\u0007"+
52762 		"\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142\u0002\u0143\u0007"+
52763 		"\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145\u0002\u0146\u0007"+
52764 		"\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148\u0002\u0149\u0007"+
52765 		"\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b\u0002\u014c\u0007"+
52766 		"\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e\u0002\u014f\u0007"+
52767 		"\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151\u0002\u0152\u0007"+
52768 		"\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154\u0002\u0155\u0007"+
52769 		"\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157\u0002\u0158\u0007"+
52770 		"\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a\u0002\u015b\u0007"+
52771 		"\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d\u0002\u015e\u0007"+
52772 		"\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160\u0002\u0161\u0007"+
52773 		"\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163\u0002\u0164\u0007"+
52774 		"\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166\u0002\u0167\u0007"+
52775 		"\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169\u0002\u016a\u0007"+
52776 		"\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c\u0002\u016d\u0007"+
52777 		"\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f\u0002\u0170\u0007"+
52778 		"\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172\u0002\u0173\u0007"+
52779 		"\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175\u0002\u0176\u0007"+
52780 		"\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178\u0002\u0179\u0007"+
52781 		"\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b\u0002\u017c\u0007"+
52782 		"\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e\u0002\u017f\u0007"+
52783 		"\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181\u0002\u0182\u0007"+
52784 		"\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184\u0002\u0185\u0007"+
52785 		"\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187\u0002\u0188\u0007"+
52786 		"\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a\u0002\u018b\u0007"+
52787 		"\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d\u0002\u018e\u0007"+
52788 		"\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190\u0002\u0191\u0007"+
52789 		"\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193\u0002\u0194\u0007"+
52790 		"\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196\u0002\u0197\u0007"+
52791 		"\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199\u0002\u019a\u0007"+
52792 		"\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c\u0002\u019d\u0007"+
52793 		"\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f\u0002\u01a0\u0007"+
52794 		"\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2\u0002\u01a3\u0007"+
52795 		"\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5\u0002\u01a6\u0007"+
52796 		"\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8\u0002\u01a9\u0007"+
52797 		"\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab\u0002\u01ac\u0007"+
52798 		"\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae\u0002\u01af\u0007"+
52799 		"\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1\u0002\u01b2\u0007"+
52800 		"\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4\u0002\u01b5\u0007"+
52801 		"\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7\u0002\u01b8\u0007"+
52802 		"\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba\u0002\u01bb\u0007"+
52803 		"\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd\u0002\u01be\u0007"+
52804 		"\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0\u0002\u01c1\u0007"+
52805 		"\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3\u0002\u01c4\u0007"+
52806 		"\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6\u0002\u01c7\u0007"+
52807 		"\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9\u0002\u01ca\u0007"+
52808 		"\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc\u0002\u01cd\u0007"+
52809 		"\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf\u0002\u01d0\u0007"+
52810 		"\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2\u0002\u01d3\u0007"+
52811 		"\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5\u0002\u01d6\u0007"+
52812 		"\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8\u0002\u01d9\u0007"+
52813 		"\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db\u0002\u01dc\u0007"+
52814 		"\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de\u0002\u01df\u0007"+
52815 		"\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1\u0002\u01e2\u0007"+
52816 		"\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4\u0002\u01e5\u0007"+
52817 		"\u01e5\u0002\u01e6\u0007\u01e6\u0002\u01e7\u0007\u01e7\u0002\u01e8\u0007"+
52818 		"\u01e8\u0002\u01e9\u0007\u01e9\u0002\u01ea\u0007\u01ea\u0002\u01eb\u0007"+
52819 		"\u01eb\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52820 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52821 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52822 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52823 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52824 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52825 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52826 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52827 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52828 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0003"+
52829 		"\u0000\u0414\b\u0000\u0001\u0000\u0003\u0000\u0417\b\u0000\u0001\u0001"+
52830 		"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002"+
52831 		"\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+
52832 		"\u0001\u0002\u0003\u0002\u0427\b\u0002\u0001\u0003\u0001\u0003\u0001\u0003"+
52833 		"\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005"+
52834 		"\u0001\u0005\u0003\u0005\u0433\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
52835 		"\u0001\u0005\u0003\u0005\u0439\b\u0005\u0003\u0005\u043b\b\u0005\u0003"+
52836 		"\u0005\u043d\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+
52837 		"\u0006\u0003\u0006\u0444\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001"+
52838 		"\u0007\u0003\u0007\u044a\b\u0007\u0003\u0007\u044c\b\u0007\u0001\u0007"+
52839 		"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0003\u0007"+
52840 		"\u0454\b\u0007\u0001\b\u0001\b\u0003\b\u0458\b\b\u0001\t\u0001\t\u0001"+
52841 		"\t\u0001\t\u0001\t\u0001\t\u0003\t\u0460\b\t\u0001\n\u0001\n\u0003\n\u0464"+
52842 		"\b\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u046a"+
52843 		"\b\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
52844 		"\r\u0001\r\u0003\r\u0475\b\r\u0001\u000e\u0001\u000e\u0001\u000f\u0003"+
52845 		"\u000f\u047a\b\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001"+
52846 		"\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u0485"+
52847 		"\b\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0013\u0001"+
52848 		"\u0013\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0003\u0015\u0491"+
52849 		"\b\u0015\u0001\u0016\u0001\u0016\u0003\u0016\u0495\b\u0016\u0001\u0017"+
52850 		"\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u001a"+
52851 		"\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0003\u001b\u04a2\b\u001b"+
52852 		"\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c"+
52853 		"\u04a9\b\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u04ae\b"+
52854 		"\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0003\u001d\u04b3\b\u001d\u0001"+
52855 		"\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e\u04ba"+
52856 		"\b\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0003"+
52857 		"\u001f\u04c1\b\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001 \u0001"+
52858 		" \u0001 \u0003 \u04ca\b \u0001 \u0001 \u0001 \u0003 \u04cf\b \u0003 \u04d1"+
52859 		"\b \u0001 \u0001 \u0001!\u0001!\u0001!\u0003!\u04d8\b!\u0001!\u0001!\u0001"+
52860 		"\"\u0001\"\u0001#\u0001#\u0001$\u0001$\u0001$\u0003$\u04e3\b$\u0001$\u0001"+
52861 		"$\u0003$\u04e7\b$\u0001%\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001"+
52862 		"\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0005(\u04f6\b(\n(\f(\u04f9\t("+
52863 		"\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0005)\u0501\b)\n)\f)\u0504"+
52864 		"\t)\u0001)\u0001)\u0001*\u0003*\u0509\b*\u0001*\u0001*\u0001*\u0005*\u050e"+
52865 		"\b*\n*\f*\u0511\t*\u0001*\u0003*\u0514\b*\u0001+\u0001+\u0001,\u0001,"+
52866 		"\u0001-\u0001-\u0001.\u0001.\u0003.\u051e\b.\u0001/\u0001/\u0001/\u0001"+
52867 		"/\u0003/\u0524\b/\u0003/\u0526\b/\u0001/\u0001/\u00010\u00030\u052b\b"+
52868 		"0\u00010\u00010\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u0001"+
52869 		"1\u00011\u00031\u0538\b1\u00011\u00011\u00011\u00011\u00011\u00011\u0001"+
52870 		"1\u00011\u00011\u00011\u00011\u00011\u00051\u0546\b1\n1\f1\u0549\t1\u0001"+
52871 		"2\u00012\u00013\u00013\u00014\u00014\u00034\u0551\b4\u00014\u00014\u0001"+
52872 		"4\u00015\u00015\u00016\u00016\u00016\u00016\u00016\u00016\u00036\u055e"+
52873 		"\b6\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+
52874 		"6\u00016\u00016\u00016\u00056\u056d\b6\n6\f6\u0570\t6\u00017\u00017\u0001"+
52875 		"8\u00018\u00038\u0576\b8\u00018\u00018\u00018\u00018\u00018\u00038\u057d"+
52876 		"\b8\u00018\u00018\u00018\u00018\u00018\u00058\u0584\b8\n8\f8\u0587\t8"+
52877 		"\u00018\u00018\u00018\u00018\u00038\u058d\b8\u00018\u00018\u00018\u0001"+
52878 		"8\u00018\u00018\u00018\u00038\u0596\b8\u00018\u00018\u00018\u00018\u0003"+
52879 		"8\u059c\b8\u00018\u00038\u059f\b8\u00019\u00019\u00019\u00019\u00019\u0001"+
52880 		"9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+
52881 		"9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+
52882 		"9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00059\u05c2\b9\n9"+
52883 		"\f9\u05c5\t9\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0001"+
52884 		":\u0003:\u05d0\b:\u0001:\u0001:\u0001:\u0001:\u0005:\u05d6\b:\n:\f:\u05d9"+
52885 		"\t:\u0001:\u0001:\u0001:\u0003:\u05de\b:\u0001:\u0001:\u0001:\u0001:\u0001"+
52886 		":\u0001:\u0001:\u0001:\u0003:\u05e8\b:\u0001:\u0001:\u0001:\u0005:\u05ed"+
52887 		"\b:\n:\f:\u05f0\t:\u0001;\u0001;\u0001;\u0003;\u05f5\b;\u0001<\u0001<"+
52888 		"\u0001<\u0003<\u05fa\b<\u0001<\u0001<\u0001<\u0005<\u05ff\b<\n<\f<\u0602"+
52889 		"\t<\u0001<\u0003<\u0605\b<\u0001<\u0001<\u0001=\u0001=\u0001>\u0001>\u0001"+
52890 		"?\u0001?\u0001?\u0001?\u0001?\u0003?\u0612\b?\u0001@\u0001@\u0001@\u0001"+
52891 		"@\u0001@\u0001@\u0001@\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001"+
52892 		"A\u0003A\u0622\bA\u0001A\u0001A\u0001B\u0001B\u0001B\u0001B\u0001B\u0005"+
52893 		"B\u062b\bB\nB\fB\u062e\tB\u0001B\u0001B\u0003B\u0632\bB\u0001B\u0001B"+
52894 		"\u0001C\u0001C\u0001C\u0001C\u0001C\u0003C\u063b\bC\u0001C\u0001C\u0003"+
52895 		"C\u063f\bC\u0001D\u0001D\u0001D\u0001D\u0001D\u0005D\u0646\bD\nD\fD\u0649"+
52896 		"\tD\u0001D\u0001D\u0001E\u0001E\u0001E\u0003E\u0650\bE\u0001E\u0001E\u0003"+
52897 		"E\u0654\bE\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+
52898 		"F\u0001F\u0001F\u0003F\u0661\bF\u0001F\u0001F\u0001F\u0003F\u0666\bF\u0001"+
52899 		"F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0005F\u0670\bF\nF"+
52900 		"\fF\u0673\tF\u0001F\u0001F\u0003F\u0677\bF\u0001G\u0001G\u0001G\u0001"+
52901 		"G\u0001G\u0005G\u067e\bG\nG\fG\u0681\tG\u0001G\u0003G\u0684\bG\u0001G"+
52902 		"\u0001G\u0001H\u0001H\u0001H\u0003H\u068b\bH\u0001H\u0001H\u0001H\u0001"+
52903 		"H\u0001H\u0003H\u0692\bH\u0001I\u0001I\u0003I\u0696\bI\u0001I\u0004I\u0699"+
52904 		"\bI\u000bI\fI\u069a\u0001I\u0003I\u069e\bI\u0001I\u0001I\u0001J\u0001"+
52905 		"J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001"+
52906 		"L\u0003L\u06ae\bL\u0001M\u0001M\u0001M\u0001M\u0001M\u0005M\u06b5\bM\n"+
52907 		"M\fM\u06b8\tM\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M"+
52908 		"\u0001M\u0003M\u06c3\bM\u0003M\u06c5\bM\u0001N\u0001N\u0001N\u0003N\u06ca"+
52909 		"\bN\u0001N\u0001N\u0003N\u06ce\bN\u0001N\u0003N\u06d1\bN\u0001O\u0001"+
52910 		"O\u0001O\u0003O\u06d6\bO\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001"+
52911 		"O\u0003O\u06df\bO\u0001O\u0001O\u0001O\u0003O\u06e4\bO\u0001P\u0001P\u0001"+
52912 		"Q\u0001Q\u0001Q\u0001Q\u0003Q\u06ec\bQ\u0001Q\u0001Q\u0001R\u0001R\u0001"+
52913 		"R\u0001R\u0001R\u0001R\u0001R\u0001R\u0003R\u06f8\bR\u0001R\u0001R\u0001"+
52914 		"S\u0001S\u0001S\u0001S\u0001S\u0003S\u0701\bS\u0001S\u0001S\u0001S\u0001"+
52915 		"S\u0003S\u0707\bS\u0001T\u0001T\u0001T\u0001U\u0001U\u0001U\u0003U\u070f"+
52916 		"\bU\u0001U\u0003U\u0712\bU\u0001U\u0003U\u0715\bU\u0001U\u0001U\u0001"+
52917 		"V\u0001V\u0001V\u0001V\u0001V\u0005V\u071e\bV\nV\fV\u0721\tV\u0001W\u0001"+
52918 		"W\u0001W\u0001X\u0001X\u0003X\u0728\bX\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+
52919 		"Y\u0001Z\u0001Z\u0003Z\u0731\bZ\u0001[\u0001[\u0001[\u0001[\u0001[\u0001"+
52920 		"[\u0003[\u0739\b[\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0003"+
52921 		"\\\u0741\b\\\u0001]\u0001]\u0003]\u0745\b]\u0001^\u0001^\u0001^\u0001"+
52922 		"^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0003^\u0752\b^\u0003"+
52923 		"^\u0754\b^\u0001_\u0001_\u0001_\u0001_\u0001`\u0001`\u0001`\u0003`\u075d"+
52924 		"\b`\u0001a\u0001a\u0001a\u0001b\u0001b\u0001c\u0001c\u0001c\u0001d\u0001"+
52925 		"d\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0005e\u0770\be\ne"+
52926 		"\fe\u0773\te\u0001f\u0001f\u0003f\u0777\bf\u0001g\u0001g\u0001g\u0001"+
52927 		"g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0003h\u0783\bh\u0001h\u0001"+
52928 		"h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0003"+
52929 		"i\u0790\bi\u0001j\u0001j\u0001k\u0001k\u0001k\u0005k\u0797\bk\nk\fk\u079a"+
52930 		"\tk\u0001l\u0001l\u0001m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001"+
52931 		"n\u0003n\u07a6\bn\u0001o\u0001o\u0001p\u0001p\u0001q\u0001q\u0001r\u0001"+
52932 		"r\u0001s\u0001s\u0001t\u0001t\u0001t\u0001u\u0001u\u0001v\u0001v\u0001"+
52933 		"w\u0001w\u0003w\u07bb\bw\u0001w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001"+
52934 		"x\u0003x\u07c4\bx\u0001y\u0001y\u0003y\u07c8\by\u0001z\u0001z\u0001z\u0001"+
52935 		"z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001{\u0001{\u0001"+
52936 		"{\u0001{\u0001|\u0001|\u0001|\u0001|\u0001|\u0001}\u0001}\u0001}\u0003"+
52937 		"}\u07e1\b}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001~\u0001~\u0001~\u0003"+
52938 		"~\u07eb\b~\u0001~\u0001~\u0001~\u0001~\u0001~\u0001\u007f\u0001\u007f"+
52939 		"\u0001\u007f\u0003\u007f\u07f5\b\u007f\u0001\u007f\u0001\u007f\u0001\u007f"+
52940 		"\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080\u0003\u0080\u07fe\b\u0080"+
52941 		"\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080"+
52942 		"\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0005\u0081\u080a\b\u0081"+
52943 		"\n\u0081\f\u0081\u080d\t\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001"+
52944 		"\u0082\u0001\u0082\u0003\u0082\u0814\b\u0082\u0001\u0082\u0001\u0082\u0001"+
52945 		"\u0082\u0001\u0082\u0003\u0082\u081a\b\u0082\u0001\u0083\u0001\u0083\u0001"+
52946 		"\u0083\u0001\u0083\u0005\u0083\u0820\b\u0083\n\u0083\f\u0083\u0823\t\u0083"+
52947 		"\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+
52948 		"\u0005\u0084\u082b\b\u0084\n\u0084\f\u0084\u082e\t\u0084\u0001\u0085\u0001"+
52949 		"\u0085\u0001\u0085\u0001\u0085\u0003\u0085\u0834\b\u0085\u0001\u0085\u0001"+
52950 		"\u0085\u0001\u0085\u0001\u0085\u0001\u0086\u0001\u0086\u0001\u0086\u0001"+
52951 		"\u0086\u0003\u0086\u083e\b\u0086\u0001\u0086\u0005\u0086\u0841\b\u0086"+
52952 		"\n\u0086\f\u0086\u0844\t\u0086\u0001\u0087\u0001\u0087\u0001\u0087\u0001"+
52953 		"\u0087\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088\u0001"+
52954 		"\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089\u0001"+
52955 		"\u0089\u0001\u0089\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001"+
52956 		"\u008a\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0001"+
52957 		"\u008b\u0005\u008b\u0862\b\u008b\n\u008b\f\u008b\u0865\t\u008b\u0001\u008c"+
52958 		"\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0003\u008c"+
52959 		"\u086d\b\u008c\u0001\u008c\u0003\u008c\u0870\b\u008c\u0001\u008d\u0001"+
52960 		"\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0003\u008d\u0877\b\u008d\u0001"+
52961 		"\u008d\u0001\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0003\u008e\u087e"+
52962 		"\b\u008e\u0001\u008e\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0003"+
52963 		"\u008f\u0885\b\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001"+
52964 		"\u0090\u0001\u0090\u0001\u0090\u0003\u0090\u088e\b\u0090\u0001\u0090\u0001"+
52965 		"\u0090\u0001\u0090\u0005\u0090\u0893\b\u0090\n\u0090\f\u0090\u0896\t\u0090"+
52966 		"\u0001\u0091\u0001\u0091\u0001\u0091\u0003\u0091\u089b\b\u0091\u0001\u0091"+
52967 		"\u0001\u0091\u0001\u0091\u0005\u0091\u08a0\b\u0091\n\u0091\f\u0091\u08a3"+
52968 		"\t\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0003\u0092\u08a8\b\u0092"+
52969 		"\u0001\u0092\u0001\u0092\u0001\u0092\u0005\u0092\u08ad\b\u0092\n\u0092"+
52970 		"\f\u0092\u08b0\t\u0092\u0001\u0093\u0001\u0093\u0001\u0093\u0003\u0093"+
52971 		"\u08b5\b\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0005\u0093\u08ba\b"+
52972 		"\u0093\n\u0093\f\u0093\u08bd\t\u0093\u0001\u0094\u0001\u0094\u0001\u0094"+
52973 		"\u0003\u0094\u08c2\b\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0005\u0094"+
52974 		"\u08c7\b\u0094\n\u0094\f\u0094\u08ca\t\u0094\u0001\u0094\u0001\u0094\u0001"+
52975 		"\u0094\u0001\u0094\u0003\u0094\u08d0\b\u0094\u0003\u0094\u08d2\b\u0094"+
52976 		"\u0001\u0095\u0001\u0095\u0001\u0095\u0003\u0095\u08d7\b\u0095\u0001\u0095"+
52977 		"\u0001\u0095\u0001\u0095\u0005\u0095\u08dc\b\u0095\n\u0095\f\u0095\u08df"+
52978 		"\t\u0095\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0097\u0001"+
52979 		"\u0097\u0001\u0097\u0003\u0097\u08e8\b\u0097\u0001\u0097\u0001\u0097\u0001"+
52980 		"\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0099\u0001\u0099\u0001"+
52981 		"\u0099\u0001\u0099\u0003\u0099\u08f4\b\u0099\u0001\u0099\u0001\u0099\u0001"+
52982 		"\u0099\u0005\u0099\u08f9\b\u0099\n\u0099\f\u0099\u08fc\t\u0099\u0001\u0099"+
52983 		"\u0003\u0099\u08ff\b\u0099\u0003\u0099\u0901\b\u0099\u0001\u0099\u0003"+
52984 		"\u0099\u0904\b\u0099\u0001\u009a\u0001\u009a\u0003\u009a\u0908\b\u009a"+
52985 		"\u0001\u009a\u0003\u009a\u090b\b\u009a\u0001\u009b\u0001\u009b\u0001\u009b"+
52986 		"\u0001\u009b\u0003\u009b\u0911\b\u009b\u0001\u009b\u0001\u009b\u0001\u009b"+
52987 		"\u0003\u009b\u0916\b\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b"+
52988 		"\u0001\u009b\u0001\u009b\u0001\u009b\u0005\u009b\u091f\b\u009b\n\u009b"+
52989 		"\f\u009b\u0922\t\u009b\u0001\u009b\u0003\u009b\u0925\b\u009b\u0003\u009b"+
52990 		"\u0927\b\u009b\u0001\u009c\u0003\u009c\u092a\b\u009c\u0001\u009c\u0004"+
52991 		"\u009c\u092d\b\u009c\u000b\u009c\f\u009c\u092e\u0001\u009d\u0001\u009d"+
52992 		"\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d"+
52993 		"\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0003\u009d"+
52994 		"\u093e\b\u009d\u0001\u009e\u0001\u009e\u0003\u009e\u0942\b\u009e\u0001"+
52995 		"\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u00a0\u0001\u00a0\u0001"+
52996 		"\u00a0\u0001\u00a0\u0005\u00a0\u094c\b\u00a0\n\u00a0\f\u00a0\u094f\t\u00a0"+
52997 		"\u0001\u00a0\u0001\u00a0\u0003\u00a0\u0953\b\u00a0\u0001\u00a0\u0001\u00a0"+
52998 		"\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0003\u00a1"+
52999 		"\u095c\b\u00a1\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0005\u00a2\u0961\b"+
53000 		"\u00a2\n\u00a2\f\u00a2\u0964\t\u00a2\u0001\u00a2\u0001\u00a2\u0003\u00a2"+
53001 		"\u0968\b\u00a2\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3"+
53002 		"\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3"+
53003 		"\u0001\u00a3\u0001\u00a3\u0003\u00a3\u0977\b\u00a3\u0001\u00a3\u0001\u00a3"+
53004 		"\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3"+
53005 		"\u0003\u00a3\u0981\b\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3"+
53006 		"\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0003\u00a3"+
53007 		"\u098c\b\u00a3\u0001\u00a3\u0003\u00a3\u098f\b\u00a3\u0001\u00a3\u0001"+
53008 		"\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001"+
53009 		"\u00a3\u0005\u00a3\u0999\b\u00a3\n\u00a3\f\u00a3\u099c\t\u00a3\u0001\u00a3"+
53010 		"\u0003\u00a3\u099f\b\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4"+
53011 		"\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4"+
53012 		"\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5"+
53013 		"\u0003\u00a5\u09b1\b\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0003\u00a5"+
53014 		"\u09b6\b\u00a5\u0001\u00a6\u0001\u00a6\u0003\u00a6\u09ba\b\u00a6\u0001"+
53015 		"\u00a6\u0001\u00a6\u0001\u00a6\u0003\u00a6\u09bf\b\u00a6\u0001\u00a7\u0001"+
53016 		"\u00a7\u0003\u00a7\u09c3\b\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001"+
53017 		"\u00a7\u0001\u00a7\u0003\u00a7\u09ca\b\u00a7\u0001\u00a7\u0005\u00a7\u09cd"+
53018 		"\b\u00a7\n\u00a7\f\u00a7\u09d0\t\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8"+
53019 		"\u0001\u00a8\u0001\u00a8\u0003\u00a8\u09d7\b\u00a8\u0001\u00a8\u0001\u00a8"+
53020 		"\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0003\u00a8"+
53021 		"\u09e0\b\u00a8\u0001\u00a9\u0001\u00a9\u0003\u00a9\u09e4\b\u00a9\u0001"+
53022 		"\u00a9\u0001\u00a9\u0003\u00a9\u09e8\b\u00a9\u0001\u00aa\u0003\u00aa\u09eb"+
53023 		"\b\u00aa\u0001\u00aa\u0003\u00aa\u09ee\b\u00aa\u0001\u00aa\u0003\u00aa"+
53024 		"\u09f1\b\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac"+
53025 		"\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0005\u00ac"+
53026 		"\u09fd\b\u00ac\n\u00ac\f\u00ac\u0a00\t\u00ac\u0001\u00ac\u0001\u00ac\u0003"+
53027 		"\u00ac\u0a04\b\u00ac\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0003\u00ad\u0a09"+
53028 		"\b\u00ad\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+
53029 		"\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00b0\u0001\u00b0\u0001"+
53030 		"\u00b0\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0003\u00b1\u0a1b"+
53031 		"\b\u00b1\u0003\u00b1\u0a1d\b\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b2"+
53032 		"\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3"+
53033 		"\u0003\u00b3\u0a28\b\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+
53034 		"\u0001\u00b3\u0001\u00b3\u0003\u00b3\u0a30\b\u00b3\u0001\u00b3\u0005\u00b3"+
53035 		"\u0a33\b\u00b3\n\u00b3\f\u00b3\u0a36\t\u00b3\u0001\u00b4\u0001\u00b4\u0001"+
53036 		"\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0003\u00b4\u0a3e\b\u00b4\u0001"+
53037 		"\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0003\u00b5\u0a45"+
53038 		"\b\u00b5\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0003\u00b6\u0a4b"+
53039 		"\b\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b7\u0001"+
53040 		"\u00b7\u0001\u00b7\u0003\u00b7\u0a54\b\u00b7\u0001\u00b7\u0003\u00b7\u0a57"+
53041 		"\b\u00b7\u0001\u00b7\u0003\u00b7\u0a5a\b\u00b7\u0001\u00b7\u0003\u00b7"+
53042 		"\u0a5d\b\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8"+
53043 		"\u0005\u00b8\u0a64\b\u00b8\n\u00b8\f\u00b8\u0a67\t\u00b8\u0001\u00b8\u0001"+
53044 		"\u00b8\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0003\u00b9\u0a6e\b\u00b9\u0001"+
53045 		"\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001"+
53046 		"\u00bb\u0003\u00bb\u0a77\b\u00bb\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0005"+
53047 		"\u00bc\u0a7c\b\u00bc\n\u00bc\f\u00bc\u0a7f\t\u00bc\u0003\u00bc\u0a81\b"+
53048 		"\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001"+
53049 		"\u00bd\u0003\u00bd\u0a89\b\u00bd\u0003\u00bd\u0a8b\b\u00bd\u0001\u00bd"+
53050 		"\u0003\u00bd\u0a8e\b\u00bd\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+
53051 		"\u0001\u00be\u0001\u00be\u0001\u00bf\u0001\u00bf\u0003\u00bf\u0a98\b\u00bf"+
53052 		"\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0003\u00bf\u0a9d\b\u00bf\u0001\u00c0"+
53053 		"\u0001\u00c0\u0001\u00c0\u0003\u00c0\u0aa2\b\u00c0\u0001\u00c1\u0001\u00c1"+
53054 		"\u0003\u00c1\u0aa6\b\u00c1\u0001\u00c2\u0003\u00c2\u0aa9\b\u00c2\u0001"+
53055 		"\u00c2\u0001\u00c2\u0003\u00c2\u0aad\b\u00c2\u0001\u00c2\u0003\u00c2\u0ab0"+
53056 		"\b\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0003\u00c3\u0ab5\b\u00c3"+
53057 		"\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5"+
53058 		"\u0003\u00c5\u0abd\b\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+
53059 		"\u0001\u00c5\u0005\u00c5\u0ac4\b\u00c5\n\u00c5\f\u00c5\u0ac7\t\u00c5\u0001"+
53060 		"\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0ace"+
53061 		"\b\u00c6\u0001\u00c6\u0003\u00c6\u0ad1\b\u00c6\u0001\u00c6\u0003\u00c6"+
53062 		"\u0ad4\b\u00c6\u0001\u00c7\u0003\u00c7\u0ad7\b\u00c7\u0001\u00c7\u0001"+
53063 		"\u00c7\u0001\u00c7\u0001\u00c7\u0003\u00c7\u0add\b\u00c7\u0001\u00c7\u0001"+
53064 		"\u00c7\u0003\u00c7\u0ae1\b\u00c7\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001"+
53065 		"\u00c8\u0005\u00c8\u0ae7\b\u00c8\n\u00c8\f\u00c8\u0aea\t\u00c8\u0001\u00c8"+
53066 		"\u0001\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9"+
53067 		"\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001\u00ca"+
53068 		"\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca"+
53069 		"\u0003\u00ca\u0aff\b\u00ca\u0003\u00ca\u0b01\b\u00ca\u0001\u00cb\u0001"+
53070 		"\u00cb\u0001\u00cb\u0003\u00cb\u0b06\b\u00cb\u0003\u00cb\u0b08\b\u00cb"+
53071 		"\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003\u00cb"+
53072 		"\u0b0f\b\u00cb\u0003\u00cb\u0b11\b\u00cb\u0001\u00cb\u0001\u00cb\u0003"+
53073 		"\u00cb\u0b15\b\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0005"+
53074 		"\u00cc\u0b1b\b\u00cc\n\u00cc\f\u00cc\u0b1e\t\u00cc\u0001\u00cc\u0001\u00cc"+
53075 		"\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+
53076 		"\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0003\u00cd\u0b2b\b\u00cd\u0001\u00cd"+
53077 		"\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+
53078 		"\u0003\u00cd\u0b34\b\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+
53079 		"\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+
53080 		"\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0003\u00cd\u0b43\b\u00cd\u0001\u00cd"+
53081 		"\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0003\u00cd\u0b49\b\u00cd\u0001\u00cd"+
53082 		"\u0001\u00cd\u0003\u00cd\u0b4d\b\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+
53083 		"\u0001\u00cd\u0001\u00cd\u0003\u00cd\u0b54\b\u00cd\u0001\u00ce\u0001\u00ce"+
53084 		"\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce"+
53085 		"\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00cf\u0001\u00cf"+
53086 		"\u0001\u00cf\u0001\u00cf\u0005\u00cf\u0b66\b\u00cf\n\u00cf\f\u00cf\u0b69"+
53087 		"\t\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001"+
53088 		"\u00d0\u0003\u00d0\u0b71\b\u00d0\u0001\u00d0\u0003\u00d0\u0b74\b\u00d0"+
53089 		"\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d1\u0001\u00d1"+
53090 		"\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2"+
53091 		"\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2"+
53092 		"\u0001\u00d2\u0001\u00d2\u0003\u00d2\u0b8a\b\u00d2\u0003\u00d2\u0b8c\b"+
53093 		"\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001"+
53094 		"\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0003\u00d3\u0b97\b\u00d3\u0001"+
53095 		"\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+
53096 		"\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+
53097 		"\u00d4\u0001\u00d4\u0003\u00d4\u0ba7\b\u00d4\u0001\u00d4\u0001\u00d4\u0001"+
53098 		"\u00d4\u0003\u00d4\u0bac\b\u00d4\u0005\u00d4\u0bae\b\u00d4\n\u00d4\f\u00d4"+
53099 		"\u0bb1\t\u00d4\u0001\u00d4\u0001\u00d4\u0003\u00d4\u0bb5\b\u00d4\u0001"+
53100 		"\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0003\u00d5\u0bbc"+
53101 		"\b\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001"+
53102 		"\u00d5\u0005\u00d5\u0bc4\b\u00d5\n\u00d5\f\u00d5\u0bc7\t\u00d5\u0001\u00d5"+
53103 		"\u0001\u00d5\u0001\u00d5\u0001\u00d6\u0003\u00d6\u0bcd\b\u00d6\u0001\u00d6"+
53104 		"\u0003\u00d6\u0bd0\b\u00d6\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7"+
53105 		"\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0003\u00d7"+
53106 		"\u0bdb\b\u00d7\u0001\u00d8\u0001\u00d8\u0003\u00d8\u0bdf\b\u00d8\u0001"+
53107 		"\u00d8\u0001\u00d8\u0001\u00d8\u0003\u00d8\u0be4\b\u00d8\u0001\u00d9\u0001"+
53108 		"\u00d9\u0001\u00d9\u0001\u00d9\u0003\u00d9\u0bea\b\u00d9\u0001\u00d9\u0001"+
53109 		"\u00d9\u0001\u00d9\u0003\u00d9\u0bef\b\u00d9\u0001\u00d9\u0003\u00d9\u0bf2"+
53110 		"\b\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001"+
53111 		"\u00db\u0001\u00db\u0005\u00db\u0bfb\b\u00db\n\u00db\f\u00db\u0bfe\t\u00db"+
53112 		"\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc"+
53113 		"\u0003\u00dc\u0c06\b\u00dc\u0001\u00dd\u0001\u00dd\u0003\u00dd\u0c0a\b"+
53114 		"\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001"+
53115 		"\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001"+
53116 		"\u00de\u0001\u00de\u0003\u00de\u0c19\b\u00de\u0001\u00df\u0001\u00df\u0001"+
53117 		"\u00df\u0001\u00df\u0001\u00df\u0003\u00df\u0c20\b\u00df\u0001\u00df\u0001"+
53118 		"\u00df\u0001\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+
53119 		"\u00e0\u0001\u00e0\u0001\u00e0\u0003\u00e0\u0c2c\b\u00e0\u0001\u00e0\u0003"+
53120 		"\u00e0\u0c2f\b\u00e0\u0001\u00e0\u0001\u00e0\u0003\u00e0\u0c33\b\u00e0"+
53121 		"\u0001\u00e0\u0001\u00e0\u0003\u00e0\u0c37\b\u00e0\u0001\u00e1\u0001\u00e1"+
53122 		"\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0003\u00e1"+
53123 		"\u0c40\b\u00e1\u0001\u00e2\u0003\u00e2\u0c43\b\u00e2\u0001\u00e2\u0003"+
53124 		"\u00e2\u0c46\b\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0005\u00e2\u0c4b"+
53125 		"\b\u00e2\n\u00e2\f\u00e2\u0c4e\t\u00e2\u0001\u00e3\u0001\u00e3\u0003\u00e3"+
53126 		"\u0c52\b\u00e3\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4"+
53127 		"\u0005\u00e4\u0c59\b\u00e4\n\u00e4\f\u00e4\u0c5c\t\u00e4\u0001\u00e4\u0001"+
53128 		"\u00e4\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001"+
53129 		"\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001"+
53130 		"\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0003\u00e5\u0c6f\b\u00e5\u0003"+
53131 		"\u00e5\u0c71\b\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001\u00e7\u0003"+
53132 		"\u00e7\u0c77\b\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0005\u00e7\u0c7c"+
53133 		"\b\u00e7\n\u00e7\f\u00e7\u0c7f\t\u00e7\u0001\u00e8\u0001\u00e8\u0003\u00e8"+
53134 		"\u0c83\b\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0005\u00e8\u0c88\b"+
53135 		"\u00e8\n\u00e8\f\u00e8\u0c8b\t\u00e8\u0001\u00e9\u0003\u00e9\u0c8e\b\u00e9"+
53136 		"\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0003\u00e9\u0c94\b\u00e9"+
53137 		"\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0003\u00ea\u0c9a\b\u00ea"+
53138 		"\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0003\u00eb\u0c9f\b\u00eb\u0001\u00eb"+
53139 		"\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0003\u00eb\u0ca5\b\u00eb\u0001\u00eb"+
53140 		"\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0003\u00eb\u0cac\b\u00eb"+
53141 		"\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0003\u00ec\u0cb2\b\u00ec"+
53142 		"\u0001\u00ec\u0001\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed"+
53143 		"\u0001\u00ed\u0003\u00ed\u0cbb\b\u00ed\u0001\u00ee\u0001\u00ee\u0001\u00ee"+
53144 		"\u0001\u00ee\u0001\u00ee\u0003\u00ee\u0cc2\b\u00ee\u0003\u00ee\u0cc4\b"+
53145 		"\u00ee\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0003\u00ef\u0cca"+
53146 		"\b\u00ef\u0001\u00ef\u0003\u00ef\u0ccd\b\u00ef\u0001\u00ef\u0003\u00ef"+
53147 		"\u0cd0\b\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00f0\u0003\u00f0\u0cd5\b"+
53148 		"\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f1\u0003"+
53149 		"\u00f1\u0cdc\b\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
53150 		"\u00f2\u0001\u00f2\u0001\u00f2\u0003\u00f2\u0ce5\b\u00f2\u0001\u00f3\u0001"+
53151 		"\u00f3\u0001\u00f3\u0003\u00f3\u0cea\b\u00f3\u0001\u00f4\u0001\u00f4\u0001"+
53152 		"\u00f4\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0003\u00f5\u0cf3"+
53153 		"\b\u00f5\u0003\u00f5\u0cf5\b\u00f5\u0001\u00f6\u0001\u00f6\u0001\u00f6"+
53154 		"\u0003\u00f6\u0cfa\b\u00f6\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7"+
53155 		"\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0003\u00f7\u0d03\b\u00f7\u0003\u00f7"+
53156 		"\u0d05\b\u00f7\u0001\u00f7\u0003\u00f7\u0d08\b\u00f7\u0001\u00f8\u0001"+
53157 		"\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001"+
53158 		"\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001"+
53159 		"\u00f8\u0001\u00f8\u0001\u00f8\u0003\u00f8\u0d1a\b\u00f8\u0003\u00f8\u0d1c"+
53160 		"\b\u00f8\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001"+
53161 		"\u00f9\u0001\u00f9\u0001\u00f9\u0003\u00f9\u0d26\b\u00f9\u0001\u00f9\u0001"+
53162 		"\u00f9\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0003\u00fa\u0d2d\b\u00fa\u0001"+
53163 		"\u00fa\u0003\u00fa\u0d30\b\u00fa\u0001\u00fa\u0001\u00fa\u0003\u00fa\u0d34"+
53164 		"\b\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0005\u00fa\u0d3a"+
53165 		"\b\u00fa\n\u00fa\f\u00fa\u0d3d\t\u00fa\u0003\u00fa\u0d3f\b\u00fa\u0001"+
53166 		"\u00fb\u0001\u00fb\u0003\u00fb\u0d43\b\u00fb\u0001\u00fb\u0001\u00fb\u0001"+
53167 		"\u00fb\u0005\u00fb\u0d48\b\u00fb\n\u00fb\f\u00fb\u0d4b\t\u00fb\u0001\u00fb"+
53168 		"\u0001\u00fb\u0005\u00fb\u0d4f\b\u00fb\n\u00fb\f\u00fb\u0d52\t\u00fb\u0001"+
53169 		"\u00fb\u0001\u00fb\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0005"+
53170 		"\u00fc\u0d5a\b\u00fc\n\u00fc\f\u00fc\u0d5d\t\u00fc\u0001\u00fc\u0001\u00fc"+
53171 		"\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc"+
53172 		"\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc"+
53173 		"\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc"+
53174 		"\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0003\u00fc"+
53175 		"\u0d78\b\u00fc\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd"+
53176 		"\u0001\u00fd\u0003\u00fd\u0d80\b\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe"+
53177 		"\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe"+
53178 		"\u0001\u00fe\u0001\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff"+
53179 		"\u0001\u00ff\u0003\u00ff\u0d92\b\u00ff\u0003\u00ff\u0d94\b\u00ff\u0001"+
53180 		"\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0003\u00ff\u0d9b"+
53181 		"\b\u00ff\u0001\u00ff\u0003\u00ff\u0d9e\b\u00ff\u0003\u00ff\u0da0\b\u00ff"+
53182 		"\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0003\u00ff"+
53183 		"\u0da7\b\u00ff\u0003\u00ff\u0da9\b\u00ff\u0001\u0100\u0001\u0100\u0001"+
53184 		"\u0100\u0003\u0100\u0dae\b\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0005"+
53185 		"\u0100\u0db3\b\u0100\n\u0100\f\u0100\u0db6\t\u0100\u0001\u0101\u0001\u0101"+
53186 		"\u0003\u0101\u0dba\b\u0101\u0001\u0101\u0003\u0101\u0dbd\b\u0101\u0001"+
53187 		"\u0101\u0001\u0101\u0003\u0101\u0dc1\b\u0101\u0001\u0102\u0001\u0102\u0001"+
53188 		"\u0102\u0001\u0102\u0001\u0102\u0005\u0102\u0dc8\b\u0102\n\u0102\f\u0102"+
53189 		"\u0dcb\t\u0102\u0003\u0102\u0dcd\b\u0102\u0001\u0103\u0001\u0103\u0001"+
53190 		"\u0103\u0001\u0103\u0005\u0103\u0dd3\b\u0103\n\u0103\f\u0103\u0dd6\t\u0103"+
53191 		"\u0001\u0103\u0003\u0103\u0dd9\b\u0103\u0001\u0104\u0001\u0104\u0003\u0104"+
53192 		"\u0ddd\b\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0003\u0104\u0de2\b"+
53193 		"\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0003\u0104\u0de7\b\u0104\u0001"+
53194 		"\u0105\u0001\u0105\u0003\u0105\u0deb\b\u0105\u0001\u0105\u0001\u0105\u0001"+
53195 		"\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0005\u0106\u0df4"+
53196 		"\b\u0106\n\u0106\f\u0106\u0df7\t\u0106\u0001\u0106\u0001\u0106\u0001\u0107"+
53197 		"\u0001\u0107\u0003\u0107\u0dfd\b\u0107\u0001\u0108\u0001\u0108\u0001\u0108"+
53198 		"\u0001\u0108\u0003\u0108\u0e03\b\u0108\u0001\u0108\u0001\u0108\u0003\u0108"+
53199 		"\u0e07\b\u0108\u0001\u0108\u0001\u0108\u0003\u0108\u0e0b\b\u0108\u0001"+
53200 		"\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0003"+
53201 		"\u0108\u0e13\b\u0108\u0003\u0108\u0e15\b\u0108\u0001\u0108\u0003\u0108"+
53202 		"\u0e18\b\u0108\u0001\u0108\u0001\u0108\u0001\u0109\u0001\u0109\u0001\u0109"+
53203 		"\u0003\u0109\u0e1f\b\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0003\u0109"+
53204 		"\u0e24\b\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u0109"+
53205 		"\u0001\u0109\u0001\u0109\u0003\u0109\u0e2d\b\u0109\u0001\u010a\u0001\u010a"+
53206 		"\u0001\u010a\u0003\u010a\u0e32\b\u010a\u0001\u010a\u0001\u010a\u0001\u010a"+
53207 		"\u0001\u010a\u0005\u010a\u0e38\b\u010a\n\u010a\f\u010a\u0e3b\t\u010a\u0001"+
53208 		"\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0003\u010a\u0e41\b\u010a\u0001"+
53209 		"\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0003"+
53210 		"\u010c\u0e49\b\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001"+
53211 		"\u010c\u0001\u010c\u0001\u010c\u0003\u010c\u0e52\b\u010c\u0001\u010c\u0001"+
53212 		"\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001"+
53213 		"\u010c\u0001\u010c\u0001\u010c\u0003\u010c\u0e5e\b\u010c\u0001\u010d\u0001"+
53214 		"\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001"+
53215 		"\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0005\u010d\u0e6c"+
53216 		"\b\u010d\n\u010d\f\u010d\u0e6f\t\u010d\u0003\u010d\u0e71\b\u010d\u0003"+
53217 		"\u010d\u0e73\b\u010d\u0001\u010e\u0003\u010e\u0e76\b\u010e\u0001\u010e"+
53218 		"\u0003\u010e\u0e79\b\u010e\u0001\u010e\u0003\u010e\u0e7c\b\u010e\u0001"+
53219 		"\u010e\u0003\u010e\u0e7f\b\u010e\u0001\u010f\u0001\u010f\u0001\u010f\u0001"+
53220 		"\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001"+
53221 		"\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001"+
53222 		"\u010f\u0003\u010f\u0e91\b\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0003"+
53223 		"\u0110\u0e96\b\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0003\u0110\u0e9b"+
53224 		"\b\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0003\u0110\u0ea0\b\u0110"+
53225 		"\u0001\u0110\u0003\u0110\u0ea3\b\u0110\u0005\u0110\u0ea5\b\u0110\n\u0110"+
53226 		"\f\u0110\u0ea8\t\u0110\u0001\u0110\u0001\u0110\u0001\u0111\u0001\u0111"+
53227 		"\u0001\u0111\u0003\u0111\u0eaf\b\u0111\u0001\u0112\u0001\u0112\u0001\u0112"+
53228 		"\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0005\u0112"+
53229 		"\u0eb9\b\u0112\n\u0112\f\u0112\u0ebc\t\u0112\u0003\u0112\u0ebe\b\u0112"+
53230 		"\u0001\u0112\u0003\u0112\u0ec1\b\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+
53231 		"\u0001\u0112\u0001\u0112\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
53232 		"\u0001\u0113\u0001\u0113\u0005\u0113\u0ece\b\u0113\n\u0113\f\u0113\u0ed1"+
53233 		"\t\u0113\u0003\u0113\u0ed3\b\u0113\u0001\u0113\u0003\u0113\u0ed6\b\u0113"+
53234 		"\u0001\u0113\u0001\u0113\u0003\u0113\u0eda\b\u0113\u0001\u0113\u0001\u0113"+
53235 		"\u0003\u0113\u0ede\b\u0113\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114"+
53236 		"\u0001\u0114\u0001\u0114\u0005\u0114\u0ee6\b\u0114\n\u0114\f\u0114\u0ee9"+
53237 		"\t\u0114\u0003\u0114\u0eeb\b\u0114\u0001\u0114\u0003\u0114\u0eee\b\u0114"+
53238 		"\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0115"+
53239 		"\u0001\u0115\u0001\u0115\u0001\u0115\u0003\u0115\u0ef9\b\u0115\u0001\u0115"+
53240 		"\u0005\u0115\u0efc\b\u0115\n\u0115\f\u0115\u0eff\t\u0115\u0001\u0116\u0005"+
53241 		"\u0116\u0f02\b\u0116\n\u0116\f\u0116\u0f05\t\u0116\u0001\u0117\u0003\u0117"+
53242 		"\u0f08\b\u0117\u0001\u0117\u0003\u0117\u0f0b\b\u0117\u0001\u0117\u0001"+
53243 		"\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001"+
53244 		"\u0117\u0001\u0117\u0003\u0117\u0f16\b\u0117\u0001\u0117\u0003\u0117\u0f19"+
53245 		"\b\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0003\u0117\u0f1e\b\u0117"+
53246 		"\u0003\u0117\u0f20\b\u0117\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118"+
53247 		"\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118"+
53248 		"\u0003\u0118\u0f2c\b\u0118\u0001\u0118\u0003\u0118\u0f2f\b\u0118\u0001"+
53249 		"\u0119\u0001\u0119\u0001\u0119\u0005\u0119\u0f34\b\u0119\n\u0119\f\u0119"+
53250 		"\u0f37\t\u0119\u0003\u0119\u0f39\b\u0119\u0001\u011a\u0001\u011a\u0003"+
53251 		"\u011a\u0f3d\b\u011a\u0001\u011a\u0001\u011a\u0003\u011a\u0f41\b\u011a"+
53252 		"\u0001\u011a\u0003\u011a\u0f44\b\u011a\u0001\u011b\u0003\u011b\u0f47\b"+
53253 		"\u011b\u0001\u011b\u0001\u011b\u0003\u011b\u0f4b\b\u011b\u0001\u011b\u0001"+
53254 		"\u011b\u0001\u011b\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0005"+
53255 		"\u011c\u0f54\b\u011c\n\u011c\f\u011c\u0f57\t\u011c\u0003\u011c\u0f59\b"+
53256 		"\u011c\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0003"+
53257 		"\u011d\u0f60\b\u011d\u0001\u011e\u0003\u011e\u0f63\b\u011e\u0001\u011e"+
53258 		"\u0001\u011e\u0003\u011e\u0f67\b\u011e\u0001\u011e\u0001\u011e\u0001\u011e"+
53259 		"\u0001\u011e\u0001\u011e\u0003\u011e\u0f6e\b\u011e\u0001\u011e\u0001\u011e"+
53260 		"\u0001\u011e\u0003\u011e\u0f73\b\u011e\u0001\u011e\u0001\u011e\u0001\u011e"+
53261 		"\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0005\u011e\u0f7c\b\u011e"+
53262 		"\n\u011e\f\u011e\u0f7f\t\u011e\u0001\u011e\u0001\u011e\u0003\u011e\u0f83"+
53263 		"\b\u011e\u0003\u011e\u0f85\b\u011e\u0001\u011f\u0001\u011f\u0001\u011f"+
53264 		"\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f"+
53265 		"\u0001\u011f\u0001\u011f\u0003\u011f\u0f92\b\u011f\u0001\u011f\u0001\u011f"+
53266 		"\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f"+
53267 		"\u0001\u011f\u0003\u011f\u0f9d\b\u011f\u0001\u0120\u0001\u0120\u0001\u0120"+
53268 		"\u0001\u0120\u0005\u0120\u0fa3\b\u0120\n\u0120\f\u0120\u0fa6\t\u0120\u0003"+
53269 		"\u0120\u0fa8\b\u0120\u0001\u0120\u0001\u0120\u0003\u0120\u0fac\b\u0120"+
53270 		"\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0003\u0120\u0fb2\b\u0120"+
53271 		"\u0001\u0121\u0001\u0121\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122"+
53272 		"\u0005\u0122\u0fba\b\u0122\n\u0122\f\u0122\u0fbd\t\u0122\u0001\u0123\u0001"+
53273 		"\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0005\u0123\u0fc4\b\u0123\n"+
53274 		"\u0123\f\u0123\u0fc7\t\u0123\u0001\u0123\u0001\u0123\u0003\u0123\u0fcb"+
53275 		"\b\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001"+
53276 		"\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0003\u0124\u0fd7"+
53277 		"\b\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0003\u0124\u0fdd"+
53278 		"\b\u0124\u0001\u0124\u0003\u0124\u0fe0\b\u0124\u0001\u0124\u0003\u0124"+
53279 		"\u0fe3\b\u0124\u0001\u0124\u0003\u0124\u0fe6\b\u0124\u0001\u0124\u0003"+
53280 		"\u0124\u0fe9\b\u0124\u0001\u0124\u0003\u0124\u0fec\b\u0124\u0001\u0124"+
53281 		"\u0003\u0124\u0fef\b\u0124\u0001\u0124\u0001\u0124\u0003\u0124\u0ff3\b"+
53282 		"\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0003\u0124\u0ff8\b\u0124\u0001"+
53283 		"\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0003\u0124\u0fff"+
53284 		"\b\u0124\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0003"+
53285 		"\u0125\u1006\b\u0125\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001"+
53286 		"\u0126\u0001\u0126\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001"+
53287 		"\u0127\u0003\u0127\u1013\b\u0127\u0001\u0128\u0001\u0128\u0001\u0128\u0001"+
53288 		"\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001"+
53289 		"\u0128\u0003\u0128\u101f\b\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001"+
53290 		"\u0128\u0003\u0128\u1025\b\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001"+
53291 		"\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0003\u0128\u102e\b\u0128\u0001"+
53292 		"\u0128\u0003\u0128\u1031\b\u0128\u0001\u0129\u0001\u0129\u0003\u0129\u1035"+
53293 		"\b\u0129\u0001\u0129\u0001\u0129\u0003\u0129\u1039\b\u0129\u0001\u0129"+
53294 		"\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0005\u0129\u1040\b\u0129"+
53295 		"\n\u0129\f\u0129\u1043\t\u0129\u0001\u0129\u0001\u0129\u0003\u0129\u1047"+
53296 		"\b\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001"+
53297 		"\u0129\u0001\u0129\u0003\u0129\u1050\b\u0129\u0003\u0129\u1052\b\u0129"+
53298 		"\u0001\u0129\u0001\u0129\u0001\u0129\u0003\u0129\u1057\b\u0129\u0003\u0129"+
53299 		"\u1059\b\u0129\u0001\u012a\u0001\u012a\u0001\u012a\u0005\u012a\u105e\b"+
53300 		"\u012a\n\u012a\f\u012a\u1061\t\u012a\u0001\u012b\u0001\u012b\u0001\u012b"+
53301 		"\u0001\u012b\u0001\u012b\u0001\u012b\u0005\u012b\u1069\b\u012b\n\u012b"+
53302 		"\f\u012b\u106c\t\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+
53303 		"\u0001\u012b\u0001\u012b\u0003\u012b\u1074\b\u012b\u0001\u012c\u0001\u012c"+
53304 		"\u0001\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u107b\b\u012c\u0003\u012c"+
53305 		"\u107d\b\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c"+
53306 		"\u0005\u012c\u1084\b\u012c\n\u012c\f\u012c\u1087\t\u012c\u0001\u012c\u0001"+
53307 		"\u012c\u0003\u012c\u108b\b\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001"+
53308 		"\u012c\u0001\u012c\u0003\u012c\u1092\b\u012c\u0001\u012c\u0001\u012c\u0001"+
53309 		"\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u1099\b\u012c\u0001\u012c\u0001"+
53310 		"\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001"+
53311 		"\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001"+
53312 		"\u012c\u0005\u012c\u10a9\b\u012c\n\u012c\f\u012c\u10ac\t\u012c\u0001\u012c"+
53313 		"\u0001\u012c\u0003\u012c\u10b0\b\u012c\u0001\u012c\u0001\u012c\u0003\u012c"+
53314 		"\u10b4\b\u012c\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
53315 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
53316 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
53317 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
53318 		"\u0001\u012d\u0001\u012d\u0003\u012d\u10cf\b\u012d\u0001\u012d\u0003\u012d"+
53319 		"\u10d2\b\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
53320 		"\u0001\u012d\u0001\u012d\u0003\u012d\u10db\b\u012d\u0001\u012d\u0001\u012d"+
53321 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
53322 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
53323 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
53324 		"\u0001\u012d\u0005\u012d\u10f2\b\u012d\n\u012d\f\u012d\u10f5\t\u012d\u0003"+
53325 		"\u012d\u10f7\b\u012d\u0003\u012d\u10f9\b\u012d\u0001\u012e\u0001\u012e"+
53326 		"\u0001\u012e\u0003\u012e\u10fe\b\u012e\u0001\u012f\u0001\u012f\u0001\u012f"+
53327 		"\u0001\u012f\u0001\u012f\u0001\u012f\u0003\u012f\u1106\b\u012f\u0001\u0130"+
53328 		"\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130"+
53329 		"\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130"+
53330 		"\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130"+
53331 		"\u0003\u0130\u111b\b\u0130\u0003\u0130\u111d\b\u0130\u0001\u0131\u0001"+
53332 		"\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0003"+
53333 		"\u0131\u1126\b\u0131\u0001\u0131\u0003\u0131\u1129\b\u0131\u0001\u0132"+
53334 		"\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132"+
53335 		"\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0005\u0132\u1136\b\u0132"+
53336 		"\n\u0132\f\u0132\u1139\t\u0132\u0001\u0132\u0001\u0132\u0003\u0132\u113d"+
53337 		"\b\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0005"+
53338 		"\u0132\u1144\b\u0132\n\u0132\f\u0132\u1147\t\u0132\u0001\u0132\u0001\u0132"+
53339 		"\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132"+
53340 		"\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132"+
53341 		"\u0001\u0132\u0005\u0132\u1158\b\u0132\n\u0132\f\u0132\u115b\t\u0132\u0003"+
53342 		"\u0132\u115d\b\u0132\u0001\u0132\u0001\u0132\u0003\u0132\u1161\b\u0132"+
53343 		"\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133"+
53344 		"\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0003\u0133\u116d\b\u0133"+
53345 		"\u0003\u0133\u116f\b\u0133\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134"+
53346 		"\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134"+
53347 		"\u0001\u0134\u0003\u0134\u117c\b\u0134\u0003\u0134\u117e\b\u0134\u0001"+
53348 		"\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001"+
53349 		"\u0135\u0001\u0135\u0003\u0135\u1188\b\u0135\u0001\u0136\u0001\u0136\u0001"+
53350 		"\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001"+
53351 		"\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001"+
53352 		"\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001"+
53353 		"\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001"+
53354 		"\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001"+
53355 		"\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001"+
53356 		"\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u11b5"+
53357 		"\b\u0136\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0003\u0137\u11bb"+
53358 		"\b\u0137\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001"+
53359 		"\u0138\u0001\u0138\u0003\u0138\u11c4\b\u0138\u0001\u0138\u0001\u0138\u0001"+
53360 		"\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001"+
53361 		"\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0003\u0138\u11d3"+
53362 		"\b\u0138\u0001\u0139\u0001\u0139\u0003\u0139\u11d7\b\u0139\u0001\u013a"+
53363 		"\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0005\u013a\u11de\b\u013a"+
53364 		"\n\u013a\f\u013a\u11e1\t\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0003"+
53365 		"\u013a\u11e6\b\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001"+
53366 		"\u013a\u0001\u013a\u0005\u013a\u11ee\b\u013a\n\u013a\f\u013a\u11f1\t\u013a"+
53367 		"\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a"+
53368 		"\u0003\u013a\u11f9\b\u013a\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b"+
53369 		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0003\u013b"+
53370 		"\u1204\b\u013b\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c"+
53371 		"\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0003\u013c"+
53372 		"\u1210\b\u013c\u0003\u013c\u1212\b\u013c\u0001\u013c\u0001\u013c\u0001"+
53373 		"\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0003\u013c\u121a\b\u013c\u0001"+
53374 		"\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001"+
53375 		"\u013d\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0003"+
53376 		"\u013e\u1228\b\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0005"+
53377 		"\u013e\u122e\b\u013e\n\u013e\f\u013e\u1231\t\u013e\u0001\u013e\u0001\u013e"+
53378 		"\u0003\u013e\u1235\b\u013e\u0003\u013e\u1237\b\u013e\u0001\u013f\u0001"+
53379 		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0003"+
53380 		"\u013f\u1240\b\u013f\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0003"+
53381 		"\u0140\u1246\b\u0140\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+
53382 		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+
53383 		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+
53384 		"\u0141\u0001\u0141\u0001\u0141\u0003\u0141\u125b\b\u0141\u0001\u0142\u0001"+
53385 		"\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0003\u0142\u1262\b\u0142\u0001"+
53386 		"\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0005\u0142\u1268\b\u0142\n"+
53387 		"\u0142\f\u0142\u126b\t\u0142\u0001\u0142\u0001\u0142\u0003\u0142\u126f"+
53388 		"\b\u0142\u0003\u0142\u1271\b\u0142\u0001\u0143\u0001\u0143\u0001\u0143"+
53389 		"\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+
53390 		"\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+
53391 		"\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+
53392 		"\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+
53393 		"\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+
53394 		"\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0005\u0143\u1298\b\u0143"+
53395 		"\n\u0143\f\u0143\u129b\t\u0143\u0001\u0143\u0001\u0143\u0003\u0143\u129f"+
53396 		"\b\u0143\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001"+
53397 		"\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001"+
53398 		"\u0144\u0001\u0144\u0003\u0144\u12ae\b\u0144\u0001\u0145\u0001\u0145\u0001"+
53399 		"\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0003\u0145\u12b6\b\u0145\u0001"+
53400 		"\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001"+
53401 		"\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001"+
53402 		"\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001"+
53403 		"\u0146\u0001\u0146\u0001\u0146\u0003\u0146\u12cd\b\u0146\u0001\u0147\u0001"+
53404 		"\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0003"+
53405 		"\u0147\u12d6\b\u0147\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001"+
53406 		"\u0148\u0001\u0148\u0003\u0148\u12de\b\u0148\u0001\u0149\u0001\u0149\u0001"+
53407 		"\u0149\u0001\u0149\u0001\u0149\u0001\u014a\u0001\u014a\u0001\u014a\u0001"+
53408 		"\u014a\u0003\u014a\u12e9\b\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0003"+
53409 		"\u014a\u12ee\b\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0005"+
53410 		"\u014b\u12f4\b\u014b\n\u014b\f\u014b\u12f7\t\u014b\u0001\u014b\u0001\u014b"+
53411 		"\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0005\u014c\u12ff\b\u014c"+
53412 		"\n\u014c\f\u014c\u1302\t\u014c\u0001\u014c\u0001\u014c\u0001\u014d\u0001"+
53413 		"\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0003\u014d\u130c"+
53414 		"\b\u014d\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001"+
53415 		"\u014e\u0001\u014e\u0003\u014e\u1315\b\u014e\u0001\u014f\u0001\u014f\u0001"+
53416 		"\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u131c\b\u014f\u0001\u0150\u0001"+
53417 		"\u0150\u0003\u0150\u1320\b\u0150\u0001\u0151\u0001\u0151\u0001\u0151\u0001"+
53418 		"\u0151\u0003\u0151\u1326\b\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001"+
53419 		"\u0151\u0001\u0151\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001"+
53420 		"\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001"+
53421 		"\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0003\u0152\u133b\b\u0152\u0001"+
53422 		"\u0152\u0001\u0152\u0001\u0152\u0001\u0153\u0001\u0153\u0001\u0153\u0001"+
53423 		"\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0005\u0153\u1347\b\u0153\n"+
53424 		"\u0153\f\u0153\u134a\t\u0153\u0003\u0153\u134c\b\u0153\u0001\u0153\u0001"+
53425 		"\u0153\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0005"+
53426 		"\u0154\u1355\b\u0154\n\u0154\f\u0154\u1358\t\u0154\u0001\u0154\u0001\u0154"+
53427 		"\u0003\u0154\u135c\b\u0154\u0001\u0155\u0003\u0155\u135f\b\u0155\u0001"+
53428 		"\u0155\u0001\u0155\u0003\u0155\u1363\b\u0155\u0001\u0155\u0003\u0155\u1366"+
53429 		"\b\u0155\u0001\u0155\u0001\u0155\u0003\u0155\u136a\b\u0155\u0001\u0155"+
53430 		"\u0003\u0155\u136d\b\u0155\u0001\u0155\u0003\u0155\u1370\b\u0155\u0001"+
53431 		"\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0003\u0155\u1376\b\u0155\u0001"+
53432 		"\u0156\u0003\u0156\u1379\b\u0156\u0001\u0156\u0003\u0156\u137c\b\u0156"+
53433 		"\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0157\u0003\u0157\u1382\b\u0157"+
53434 		"\u0001\u0157\u0003\u0157\u1385\b\u0157\u0001\u0157\u0001\u0157\u0001\u0157"+
53435 		"\u0001\u0157\u0005\u0157\u138b\b\u0157\n\u0157\f\u0157\u138e\t\u0157\u0001"+
53436 		"\u0158\u0003\u0158\u1391\b\u0158\u0001\u0158\u0003\u0158\u1394\b\u0158"+
53437 		"\u0001\u0158\u0001\u0158\u0001\u0159\u0003\u0159\u1399\b\u0159\u0001\u0159"+
53438 		"\u0001\u0159\u0001\u015a\u0001\u015a\u0001\u015a\u0004\u015a\u13a0\b\u015a"+
53439 		"\u000b\u015a\f\u015a\u13a1\u0001\u015a\u0001\u015a\u0001\u015b\u0001\u015b"+
53440 		"\u0001\u015b\u0001\u015b\u0001\u015b\u0005\u015b\u13ab\b\u015b\n\u015b"+
53441 		"\f\u015b\u13ae\t\u015b\u0003\u015b\u13b0\b\u015b\u0001\u015c\u0003\u015c"+
53442 		"\u13b3\b\u015c\u0001\u015c\u0001\u015c\u0003\u015c\u13b7\b\u015c\u0001"+
53443 		"\u015c\u0001\u015c\u0001\u015c\u0003\u015c\u13bc\b\u015c\u0001\u015c\u0001"+
53444 		"\u015c\u0003\u015c\u13c0\b\u015c\u0001\u015d\u0001\u015d\u0001\u015d\u0001"+
53445 		"\u015d\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0005\u015e\u13ca"+
53446 		"\b\u015e\n\u015e\f\u015e\u13cd\t\u015e\u0001\u015e\u0003\u015e\u13d0\b"+
53447 		"\u015e\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0005\u015f\u13d6"+
53448 		"\b\u015f\n\u015f\f\u015f\u13d9\t\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+
53449 		"\u0001\u015f\u0003\u015f\u13df\b\u015f\u0001\u0160\u0001\u0160\u0003\u0160"+
53450 		"\u13e3\b\u0160\u0001\u0161\u0003\u0161\u13e6\b\u0161\u0001\u0161\u0001"+
53451 		"\u0161\u0003\u0161\u13ea\b\u0161\u0001\u0161\u0001\u0161\u0003\u0161\u13ee"+
53452 		"\b\u0161\u0001\u0161\u0003\u0161\u13f1\b\u0161\u0001\u0161\u0003\u0161"+
53453 		"\u13f4\b\u0161\u0001\u0161\u0001\u0161\u0003\u0161\u13f8\b\u0161\u0001"+
53454 		"\u0162\u0003\u0162\u13fb\b\u0162\u0001\u0162\u0003\u0162\u13fe\b\u0162"+
53455 		"\u0001\u0162\u0001\u0162\u0003\u0162\u1402\b\u0162\u0001\u0162\u0003\u0162"+
53456 		"\u1405\b\u0162\u0001\u0162\u0003\u0162\u1408\b\u0162\u0001\u0163\u0001"+
53457 		"\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001"+
53458 		"\u0163\u0001\u0163\u0003\u0163\u1413\b\u0163\u0001\u0164\u0001\u0164\u0003"+
53459 		"\u0164\u1417\b\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0003\u0164\u141c"+
53460 		"\b\u0164\u0005\u0164\u141e\b\u0164\n\u0164\f\u0164\u1421\t\u0164\u0001"+
53461 		"\u0165\u0001\u0165\u0001\u0166\u0001\u0166\u0001\u0166\u0003\u0166\u1428"+
53462 		"\b\u0166\u0001\u0166\u0001\u0166\u0003\u0166\u142c\b\u0166\u0001\u0166"+
53463 		"\u0005\u0166\u142f\b\u0166\n\u0166\f\u0166\u1432\t\u0166\u0001\u0167\u0003"+
53464 		"\u0167\u1435\b\u0167\u0001\u0167\u0001\u0167\u0003\u0167\u1439\b\u0167"+
53465 		"\u0001\u0167\u0001\u0167\u0003\u0167\u143d\b\u0167\u0001\u0167\u0003\u0167"+
53466 		"\u1440\b\u0167\u0001\u0167\u0003\u0167\u1443\b\u0167\u0001\u0167\u0003"+
53467 		"\u0167\u1446\b\u0167\u0001\u0167\u0003\u0167\u1449\b\u0167\u0001\u0167"+
53468 		"\u0003\u0167\u144c\b\u0167\u0001\u0168\u0001\u0168\u0001\u0169\u0001\u0169"+
53469 		"\u0001\u0169\u0003\u0169\u1453\b\u0169\u0003\u0169\u1455\b\u0169\u0001"+
53470 		"\u0169\u0001\u0169\u0005\u0169\u1459\b\u0169\n\u0169\f\u0169\u145c\t\u0169"+
53471 		"\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0003\u016a"+
53472 		"\u1463\b\u016a\u0001\u016a\u0001\u016a\u0003\u016a\u1467\b\u016a\u0001"+
53473 		"\u016a\u0001\u016a\u0003\u016a\u146b\b\u016a\u0001\u016a\u0003\u016a\u146e"+
53474 		"\b\u016a\u0001\u016a\u0003\u016a\u1471\b\u016a\u0003\u016a\u1473\b\u016a"+
53475 		"\u0001\u016b\u0001\u016b\u0003\u016b\u1477\b\u016b\u0001\u016b\u0001\u016b"+
53476 		"\u0003\u016b\u147b\b\u016b\u0001\u016b\u0003\u016b\u147e\b\u016b\u0001"+
53477 		"\u016b\u0001\u016b\u0003\u016b\u1482\b\u016b\u0001\u016b\u0001\u016b\u0001"+
53478 		"\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0003"+
53479 		"\u016b\u148c\b\u016b\u0001\u016b\u0003\u016b\u148f\b\u016b\u0003\u016b"+
53480 		"\u1491\b\u016b\u0001\u016c\u0001\u016c\u0003\u016c\u1495\b\u016c\u0001"+
53481 		"\u016d\u0001\u016d\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016f\u0001"+
53482 		"\u016f\u0001\u016f\u0001\u0170\u0001\u0170\u0001\u0170\u0005\u0170\u14a2"+
53483 		"\b\u0170\n\u0170\f\u0170\u14a5\t\u0170\u0001\u0171\u0001\u0171\u0005\u0171"+
53484 		"\u14a9\b\u0171\n\u0171\f\u0171\u14ac\t\u0171\u0001\u0172\u0001\u0172\u0003"+
53485 		"\u0172\u14b0\b\u0172\u0001\u0172\u0003\u0172\u14b3\b\u0172\u0001\u0172"+
53486 		"\u0001\u0172\u0003\u0172\u14b7\b\u0172\u0001\u0172\u0001\u0172\u0003\u0172"+
53487 		"\u14bb\b\u0172\u0001\u0172\u0001\u0172\u0003\u0172\u14bf\b\u0172\u0001"+
53488 		"\u0172\u0003\u0172\u14c2\b\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001"+
53489 		"\u0172\u0003\u0172\u14c8\b\u0172\u0001\u0173\u0003\u0173\u14cb\b\u0173"+
53490 		"\u0001\u0173\u0003\u0173\u14ce\b\u0173\u0001\u0173\u0001\u0173\u0001\u0173"+
53491 		"\u0001\u0173\u0003\u0173\u14d4\b\u0173\u0001\u0173\u0003\u0173\u14d7\b"+
53492 		"\u0173\u0001\u0173\u0001\u0173\u0003\u0173\u14db\b\u0173\u0001\u0173\u0001"+
53493 		"\u0173\u0001\u0173\u0003\u0173\u14e0\b\u0173\u0001\u0173\u0001\u0173\u0001"+
53494 		"\u0173\u0001\u0173\u0003\u0173\u14e6\b\u0173\u0003\u0173\u14e8\b\u0173"+
53495 		"\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0003\u0174\u14ee\b\u0174"+
53496 		"\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0176\u0001\u0176\u0001\u0176"+
53497 		"\u0001\u0176\u0001\u0176\u0005\u0176\u14f8\b\u0176\n\u0176\f\u0176\u14fb"+
53498 		"\t\u0176\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0178\u0001\u0178\u0001"+
53499 		"\u0178\u0001\u0178\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u017a\u0001"+
53500 		"\u017a\u0001\u017a\u0005\u017a\u150a\b\u017a\n\u017a\f\u017a\u150d\t\u017a"+
53501 		"\u0001\u017b\u0001\u017b\u0003\u017b\u1511\b\u017b\u0001\u017b\u0001\u017b"+
53502 		"\u0001\u017b\u0001\u017c\u0001\u017c\u0001\u017c\u0003\u017c\u1519\b\u017c"+
53503 		"\u0001\u017c\u0001\u017c\u0001\u017c\u0003\u017c\u151e\b\u017c\u0003\u017c"+
53504 		"\u1520\b\u017c\u0001\u017d\u0001\u017d\u0001\u017d\u0005\u017d\u1525\b"+
53505 		"\u017d\n\u017d\f\u017d\u1528\t\u017d\u0001\u017e\u0001\u017e\u0001\u017e"+
53506 		"\u0001\u017e\u0003\u017e\u152e\b\u017e\u0001\u017e\u0003\u017e\u1531\b"+
53507 		"\u017e\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u0180\u0001\u0180\u0001"+
53508 		"\u0180\u0003\u0180\u1539\b\u0180\u0001\u0181\u0001\u0181\u0001\u0181\u0001"+
53509 		"\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001"+
53510 		"\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001"+
53511 		"\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001"+
53512 		"\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001"+
53513 		"\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001"+
53514 		"\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001"+
53515 		"\u0181\u0005\u0181\u1563\b\u0181\n\u0181\f\u0181\u1566\t\u0181\u0001\u0181"+
53516 		"\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181"+
53517 		"\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181"+
53518 		"\u0001\u0181\u0001\u0181\u0001\u0181\u0005\u0181\u1578\b\u0181\n\u0181"+
53519 		"\f\u0181\u157b\t\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181"+
53520 		"\u0003\u0181\u1581\b\u0181\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+
53521 		"\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+
53522 		"\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+
53523 		"\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+
53524 		"\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+
53525 		"\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+
53526 		"\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+
53527 		"\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+
53528 		"\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+
53529 		"\u0001\u0182\u0001\u0182\u0003\u0182\u15b9\b\u0182\u0001\u0183\u0001\u0183"+
53530 		"\u0001\u0183\u0001\u0183\u0003\u0183\u15bf\b\u0183\u0001\u0184\u0001\u0184"+
53531 		"\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0003\u0184\u15c7\b\u0184"+
53532 		"\u0001\u0184\u0003\u0184\u15ca\b\u0184\u0001\u0184\u0001\u0184\u0001\u0184"+
53533 		"\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0003\u0184"+
53534 		"\u15d4\b\u0184\u0003\u0184\u15d6\b\u0184\u0003\u0184\u15d8\b\u0184\u0001"+
53535 		"\u0184\u0001\u0184\u0001\u0184\u0003\u0184\u15dd\b\u0184\u0003\u0184\u15df"+
53536 		"\b\u0184\u0003\u0184\u15e1\b\u0184\u0001\u0184\u0001\u0184\u0001\u0184"+
53537 		"\u0001\u0184\u0003\u0184\u15e7\b\u0184\u0003\u0184\u15e9\b\u0184\u0001"+
53538 		"\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0003\u0184\u15f0"+
53539 		"\b\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0003\u0184\u15f6"+
53540 		"\b\u0184\u0003\u0184\u15f8\b\u0184\u0003\u0184\u15fa\b\u0184\u0003\u0184"+
53541 		"\u15fc\b\u0184\u0001\u0185\u0001\u0185\u0001\u0185\u0003\u0185\u1601\b"+
53542 		"\u0185\u0001\u0185\u0001\u0185\u0003\u0185\u1605\b\u0185\u0001\u0185\u0001"+
53543 		"\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0003\u0185\u160d"+
53544 		"\b\u0185\u0003\u0185\u160f\b\u0185\u0001\u0186\u0001\u0186\u0001\u0186"+
53545 		"\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186\u0003\u0186"+
53546 		"\u1619\b\u0186\u0003\u0186\u161b\b\u0186\u0001\u0186\u0001\u0186\u0003"+
53547 		"\u0186\u161f\b\u0186\u0001\u0186\u0001\u0186\u0003\u0186\u1623\b\u0186"+
53548 		"\u0003\u0186\u1625\b\u0186\u0001\u0187\u0001\u0187\u0001\u0187\u0003\u0187"+
53549 		"\u162a\b\u0187\u0003\u0187\u162c\b\u0187\u0001\u0187\u0003\u0187\u162f"+
53550 		"\b\u0187\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0005"+
53551 		"\u0188\u1636\b\u0188\n\u0188\f\u0188\u1639\t\u0188\u0001\u0188\u0001\u0188"+
53552 		"\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0003\u0189"+
53553 		"\u1642\b\u0189\u0001\u018a\u0001\u018a\u0001\u018b\u0001\u018b\u0001\u018c"+
53554 		"\u0001\u018c\u0001\u018c\u0001\u018d\u0001\u018d\u0001\u018d\u0003\u018d"+
53555 		"\u164e\b\u018d\u0001\u018e\u0001\u018e\u0001\u018e\u0003\u018e\u1653\b"+
53556 		"\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0005\u018e\u1659"+
53557 		"\b\u018e\n\u018e\f\u018e\u165c\t\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+
53558 		"\u0003\u018e\u1661\b\u018e\u0001\u018e\u0001\u018e\u0003\u018e\u1665\b"+
53559 		"\u018e\u0001\u018f\u0001\u018f\u0001\u018f\u0003\u018f\u166a\b\u018f\u0001"+
53560 		"\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0005\u018f\u1670\b\u018f\n"+
53561 		"\u018f\f\u018f\u1673\t\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0003"+
53562 		"\u018f\u1678\b\u018f\u0001\u0190\u0001\u0190\u0003\u0190\u167c\b\u0190"+
53563 		"\u0001\u0190\u0001\u0190\u0001\u0190\u0003\u0190\u1681\b\u0190\u0005\u0190"+
53564 		"\u1683\b\u0190\n\u0190\f\u0190\u1686\t\u0190\u0001\u0191\u0001\u0191\u0001"+
53565 		"\u0191\u0001\u0191\u0003\u0191\u168c\b\u0191\u0001\u0191\u0001\u0191\u0001"+
53566 		"\u0192\u0001\u0192\u0001\u0192\u0005\u0192\u1693\b\u0192\n\u0192\f\u0192"+
53567 		"\u1696\t\u0192\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0003\u0193"+
53568 		"\u169c\b\u0193\u0001\u0193\u0001\u0193\u0001\u0194\u0001\u0194\u0001\u0194"+
53569 		"\u0003\u0194\u16a3\b\u0194\u0001\u0194\u0001\u0194\u0001\u0195\u0001\u0195"+
53570 		"\u0001\u0196\u0001\u0196\u0003\u0196\u16ab\b\u0196\u0001\u0196\u0001\u0196"+
53571 		"\u0003\u0196\u16af\b\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0003\u0197"+
53572 		"\u16b4\b\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0005\u0197"+
53573 		"\u16ba\b\u0197\n\u0197\f\u0197\u16bd\t\u0197\u0001\u0197\u0003\u0197\u16c0"+
53574 		"\b\u0197\u0001\u0197\u0001\u0197\u0003\u0197\u16c4\b\u0197\u0001\u0198"+
53575 		"\u0001\u0198\u0001\u0198\u0003\u0198\u16c9\b\u0198\u0001\u0198\u0001\u0198"+
53576 		"\u0001\u0198\u0001\u0198\u0005\u0198\u16cf\b\u0198\n\u0198\f\u0198\u16d2"+
53577 		"\t\u0198\u0001\u0198\u0003\u0198\u16d5\b\u0198\u0001\u0199\u0001\u0199"+
53578 		"\u0001\u0199\u0003\u0199\u16da\b\u0199\u0001\u019a\u0001\u019a\u0001\u019a"+
53579 		"\u0003\u019a\u16df\b\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
53580 		"\u0005\u019a\u16e5\b\u019a\n\u019a\f\u019a\u16e8\t\u019a\u0001\u019a\u0003"+
53581 		"\u019a\u16eb\b\u019a\u0001\u019a\u0001\u019a\u0003\u019a\u16ef\b\u019a"+
53582 		"\u0001\u019b\u0001\u019b\u0001\u019b\u0003\u019b\u16f4\b\u019b\u0001\u019b"+
53583 		"\u0001\u019b\u0001\u019b\u0001\u019b\u0005\u019b\u16fa\b\u019b\n\u019b"+
53584 		"\f\u019b\u16fd\t\u019b\u0001\u019b\u0003\u019b\u1700\b\u019b\u0001\u019c"+
53585 		"\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019d\u0001\u019d\u0003\u019d"+
53586 		"\u1708\b\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d"+
53587 		"\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d"+
53588 		"\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d"+
53589 		"\u0001\u019d\u0001\u019d\u0003\u019d\u171d\b\u019d\u0001\u019e\u0001\u019e"+
53590 		"\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e"+
53591 		"\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e"+
53592 		"\u0001\u019e\u0001\u019e\u0003\u019e\u172f\b\u019e\u0001\u019f\u0001\u019f"+
53593 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53594 		"\u0001\u019f\u0003\u019f\u173a\b\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53595 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53596 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53597 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0003\u019f\u174f\b\u019f"+
53598 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53599 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53600 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53601 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53602 		"\u0003\u019f\u1769\b\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53603 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53604 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+
53605 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0003\u019f\u177e\b\u019f\u0001\u01a0"+
53606 		"\u0001\u01a0\u0003\u01a0\u1782\b\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0"+
53607 		"\u0003\u01a0\u1787\b\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0"+
53608 		"\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0003\u01a0\u1790\b\u01a0\u0003\u01a0"+
53609 		"\u1792\b\u01a0\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53610 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53611 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0003\u01a1"+
53612 		"\u17a4\b\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53613 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53614 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53615 		"\u0001\u01a1\u0003\u01a1\u17b8\b\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53616 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53617 		"\u0003\u01a1\u17c3\b\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53618 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53619 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53620 		"\u0001\u01a1\u0003\u01a1\u17d6\b\u01a1\u0001\u01a1\u0001\u01a1\u0003\u01a1"+
53621 		"\u17da\b\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53622 		"\u0001\u01a1\u0003\u01a1\u17e2\b\u01a1\u0001\u01a1\u0001\u01a1\u0003\u01a1"+
53623 		"\u17e6\b\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53624 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0003\u01a1\u17f1\b\u01a1"+
53625 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53626 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53627 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53628 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53629 		"\u0001\u01a1\u0001\u01a1\u0003\u01a1\u180d\b\u01a1\u0001\u01a1\u0001\u01a1"+
53630 		"\u0001\u01a1\u0001\u01a1\u0003\u01a1\u1813\b\u01a1\u0001\u01a1\u0001\u01a1"+
53631 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53632 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53633 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53634 		"\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53635 		"\u0001\u01a1\u0003\u01a1\u1830\b\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+
53636 		"\u0001\u01a1\u0001\u01a1\u0003\u01a1\u1837\b\u01a1\u0001\u01a1\u0001\u01a1"+
53637 		"\u0003\u01a1\u183b\b\u01a1\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0003\u01a2"+
53638 		"\u1840\b\u01a2\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3"+
53639 		"\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0003\u01a3\u184a\b\u01a3\u0001\u01a4"+
53640 		"\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4"+
53641 		"\u0001\u01a4\u0001\u01a4\u0003\u01a4\u1855\b\u01a4\u0001\u01a5\u0001\u01a5"+
53642 		"\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5"+
53643 		"\u0003\u01a5\u185f\b\u01a5\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6"+
53644 		"\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0003\u01a6\u1868\b\u01a6\u0001\u01a7"+
53645 		"\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7"+
53646 		"\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7"+
53647 		"\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7"+
53648 		"\u0001\u01a7\u0003\u01a7\u187e\b\u01a7\u0001\u01a8\u0001\u01a8\u0001\u01a8"+
53649 		"\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8"+
53650 		"\u0001\u01a8\u0001\u01a8\u0003\u01a8\u188b\b\u01a8\u0001\u01a9\u0001\u01a9"+
53651 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0003\u01a9\u1892\b\u01a9\u0001\u01aa"+
53652 		"\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+
53653 		"\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0003\u01aa\u189e\b\u01aa\u0001\u01ab"+
53654 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
53655 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0003\u01ab\u18ab\b\u01ab"+
53656 		"\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+
53657 		"\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0003\u01ac"+
53658 		"\u18b8\b\u01ac\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad"+
53659 		"\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0003\u01ad\u18c3\b\u01ad"+
53660 		"\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae"+
53661 		"\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0003\u01ae\u18cf\b\u01ae"+
53662 		"\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0003\u01af\u18d5\b\u01af"+
53663 		"\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0003\u01af\u18db\b\u01af"+
53664 		"\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0003\u01af\u18e1\b\u01af"+
53665 		"\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0"+
53666 		"\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0003\u01b0\u18ed\b\u01b0"+
53667 		"\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1"+
53668 		"\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0003\u01b1"+
53669 		"\u18fa\b\u01b1\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2"+
53670 		"\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2"+
53671 		"\u0003\u01b2\u1907\b\u01b2\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3"+
53672 		"\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3"+
53673 		"\u0003\u01b3\u1913\b\u01b3\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4"+
53674 		"\u0003\u01b4\u1919\b\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4"+
53675 		"\u0003\u01b4\u191f\b\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4"+
53676 		"\u0001\u01b4\u0003\u01b4\u1926\b\u01b4\u0001\u01b5\u0001\u01b5\u0003\u01b5"+
53677 		"\u192a\b\u01b5\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6"+
53678 		"\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6"+
53679 		"\u0003\u01b6\u1937\b\u01b6\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+
53680 		"\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+
53681 		"\u0001\u01b7\u0003\u01b7\u1944\b\u01b7\u0001\u01b8\u0001\u01b8\u0001\u01b8"+
53682 		"\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0003\u01b8\u194d\b\u01b8"+
53683 		"\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9"+
53684 		"\u0001\u01b9\u0001\u01b9\u0003\u01b9\u1957\b\u01b9\u0001\u01ba\u0001\u01ba"+
53685 		"\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bc\u0001\u01bc"+
53686 		"\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc"+
53687 		"\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc"+
53688 		"\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc"+
53689 		"\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc"+
53690 		"\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc"+
53691 		"\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc"+
53692 		"\u0001\u01bc\u0001\u01bc\u0003\u01bc\u1987\b\u01bc\u0001\u01bd\u0001\u01bd"+
53693 		"\u0001\u01be\u0001\u01be\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf"+
53694 		"\u0003\u01bf\u1991\b\u01bf\u0003\u01bf\u1993\b\u01bf\u0001\u01c0\u0001"+
53695 		"\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001"+
53696 		"\u01c0\u0001\u01c0\u0001\u01c0\u0003\u01c0\u199f\b\u01c0\u0001\u01c1\u0001"+
53697 		"\u01c1\u0001\u01c1\u0001\u01c1\u0003\u01c1\u19a5\b\u01c1\u0001\u01c1\u0001"+
53698 		"\u01c1\u0001\u01c1\u0001\u01c1\u0005\u01c1\u19ab\b\u01c1\n\u01c1\f\u01c1"+
53699 		"\u19ae\t\u01c1\u0003\u01c1\u19b0\b\u01c1\u0001\u01c2\u0001\u01c2\u0001"+
53700 		"\u01c2\u0001\u01c2\u0001\u01c2\u0005\u01c2\u19b7\b\u01c2\n\u01c2\f\u01c2"+
53701 		"\u19ba\t\u01c2\u0003\u01c2\u19bc\b\u01c2\u0001\u01c2\u0001\u01c2\u0001"+
53702 		"\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001"+
53703 		"\u01c2\u0005\u01c2\u19c7\b\u01c2\n\u01c2\f\u01c2\u19ca\t\u01c2\u0003\u01c2"+
53704 		"\u19cc\b\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2"+
53705 		"\u0003\u01c2\u19d3\b\u01c2\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3"+
53706 		"\u0003\u01c3\u19d9\b\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3"+
53707 		"\u0001\u01c3\u0003\u01c3\u19e0\b\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3"+
53708 		"\u0001\u01c3\u0005\u01c3\u19e6\b\u01c3\n\u01c3\f\u01c3\u19e9\t\u01c3\u0003"+
53709 		"\u01c3\u19eb\b\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001"+
53710 		"\u01c4\u0001\u01c4\u0001\u01c4\u0005\u01c4\u19f4\b\u01c4\n\u01c4\f\u01c4"+
53711 		"\u19f7\t\u01c4\u0003\u01c4\u19f9\b\u01c4\u0001\u01c4\u0001\u01c4\u0001"+
53712 		"\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0003\u01c4\u1a02"+
53713 		"\b\u01c4\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001"+
53714 		"\u01c5\u0001\u01c5\u0003\u01c5\u1a0b\b\u01c5\u0001\u01c5\u0001\u01c5\u0001"+
53715 		"\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0003\u01c5\u1a13\b\u01c5\u0003"+
53716 		"\u01c5\u1a15\b\u01c5\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+
53717 		"\u01c6\u0001\u01c6\u0001\u01c6\u0003\u01c6\u1a1e\b\u01c6\u0001\u01c6\u0001"+
53718 		"\u01c6\u0001\u01c6\u0003\u01c6\u1a23\b\u01c6\u0003\u01c6\u1a25\b\u01c6"+
53719 		"\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0003\u01c7\u1a2b\b\u01c7"+
53720 		"\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7"+
53721 		"\u0001\u01c7\u0005\u01c7\u1a34\b\u01c7\n\u01c7\f\u01c7\u1a37\t\u01c7\u0003"+
53722 		"\u01c7\u1a39\b\u01c7\u0003\u01c7\u1a3b\b\u01c7\u0001\u01c8\u0001\u01c8"+
53723 		"\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0003\u01c8\u1a43\b\u01c8"+
53724 		"\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0003\u01c8\u1a49\b\u01c8"+
53725 		"\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9"+
53726 		"\u0001\u01c9\u0001\u01c9\u0003\u01c9\u1a53\b\u01c9\u0001\u01ca\u0001\u01ca"+
53727 		"\u0001\u01cb\u0001\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cd\u0001\u01cd"+
53728 		"\u0001\u01cd\u0003\u01cd\u1a5e\b\u01cd\u0001\u01ce\u0001\u01ce\u0001\u01ce"+
53729 		"\u0003\u01ce\u1a63\b\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01cf\u0001\u01cf"+
53730 		"\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0005\u01cf"+
53731 		"\u1a6e\b\u01cf\n\u01cf\f\u01cf\u1a71\t\u01cf\u0001\u01cf\u0001\u01cf\u0001"+
53732 		"\u01cf\u0003\u01cf\u1a76\b\u01cf\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001"+
53733 		"\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0003\u01d0\u1a7f\b\u01d0\u0001"+
53734 		"\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001"+
53735 		"\u01d0\u0001\u01d0\u0001\u01d0\u0003\u01d0\u1a8a\b\u01d0\u0001\u01d0\u0001"+
53736 		"\u01d0\u0001\u01d0\u0001\u01d0\u0003\u01d0\u1a90\b\u01d0\u0001\u01d0\u0001"+
53737 		"\u01d0\u0001\u01d0\u0003\u01d0\u1a95\b\u01d0\u0003\u01d0\u1a97\b\u01d0"+
53738 		"\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0003\u01d1"+
53739 		"\u1a9e\b\u01d1\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0003\u01d2\u1aa3\b"+
53740 		"\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001"+
53741 		"\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001"+
53742 		"\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0003\u01d3\u1ab4\b\u01d3\u0001"+
53743 		"\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001"+
53744 		"\u01d4\u0001\u01d4\u0003\u01d4\u1abe\b\u01d4\u0001\u01d5\u0001\u01d5\u0001"+
53745 		"\u01d5\u0001\u01d5\u0003\u01d5\u1ac4\b\u01d5\u0001\u01d6\u0001\u01d6\u0001"+
53746 		"\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0003\u01d6\u1acc\b\u01d6\u0001"+
53747 		"\u01d6\u0003\u01d6\u1acf\b\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001"+
53748 		"\u01d6\u0005\u01d6\u1ad5\b\u01d6\n\u01d6\f\u01d6\u1ad8\t\u01d6\u0003\u01d6"+
53749 		"\u1ada\b\u01d6\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7"+
53750 		"\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7"+
53751 		"\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7"+
53752 		"\u0001\u01d7\u0003\u01d7\u1aee\b\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d9"+
53753 		"\u0001\u01d9\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da"+
53754 		"\u0005\u01da\u1af9\b\u01da\n\u01da\f\u01da\u1afc\t\u01da\u0003\u01da\u1afe"+
53755 		"\b\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0003"+
53756 		"\u01da\u1b05\b\u01da\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001"+
53757 		"\u01db\u0001\u01db\u0003\u01db\u1b0d\b\u01db\u0001\u01dc\u0001\u01dc\u0001"+
53758 		"\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0005\u01dc\u1b16"+
53759 		"\b\u01dc\n\u01dc\f\u01dc\u1b19\t\u01dc\u0003\u01dc\u1b1b\b\u01dc\u0001"+
53760 		"\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001"+
53761 		"\u01dd\u0003\u01dd\u1b24\b\u01dd\u0001\u01de\u0001\u01de\u0001\u01de\u0003"+
53762 		"\u01de\u1b29\b\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0005"+
53763 		"\u01de\u1b2f\b\u01de\n\u01de\f\u01de\u1b32\t\u01de\u0001\u01df\u0001\u01df"+
53764 		"\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df"+
53765 		"\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0003\u01df\u1b40\b\u01df"+
53766 		"\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e1\u0001\u01e1\u0001\u01e1"+
53767 		"\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0003\u01e1\u1b4c\b\u01e1"+
53768 		"\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0003\u01e2\u1b52\b\u01e2"+
53769 		"\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0003\u01e3\u1b58\b\u01e3"+
53770 		"\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0005\u01e3\u1b5e\b\u01e3"+
53771 		"\n\u01e3\f\u01e3\u1b61\t\u01e3\u0003\u01e3\u1b63\b\u01e3\u0001\u01e4\u0001"+
53772 		"\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0003\u01e4\u1b6b"+
53773 		"\b\u01e4\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e6\u0001"+
53774 		"\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001"+
53775 		"\u01e6\u0005\u01e6\u1b79\b\u01e6\n\u01e6\f\u01e6\u1b7c\t\u01e6\u0001\u01e6"+
53776 		"\u0003\u01e6\u1b7f\b\u01e6\u0001\u01e7\u0001\u01e7\u0001\u01e8\u0001\u01e8"+
53777 		"\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0003\u01e8\u1b89\b\u01e8"+
53778 		"\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0003\u01e8"+
53779 		"\u1b90\b\u01e8\u0003\u01e8\u1b92\b\u01e8\u0001\u01e8\u0001\u01e8\u0001"+
53780 		"\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001"+
53781 		"\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001"+
53782 		"\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0003"+
53783 		"\u01e8\u1ba8\b\u01e8\u0001\u01e9\u0001\u01e9\u0001\u01ea\u0001\u01ea\u0001"+
53784 		"\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0003\u01ea\u1bb2\b\u01ea\u0001"+
53785 		"\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0003\u01eb\u1bb9"+
53786 		"\b\u01eb\u0001\u01eb\u0000\u0004blrt\u01ec\u0000\u0002\u0004\u0006\b\n"+
53787 		"\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.0246"+
53788 		"8:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a"+
53789 		"\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2"+
53790 		"\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba"+
53791 		"\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2"+
53792 		"\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea"+
53793 		"\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102"+
53794 		"\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a"+
53795 		"\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132"+
53796 		"\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a"+
53797 		"\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162"+
53798 		"\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a"+
53799 		"\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192"+
53800 		"\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa"+
53801 		"\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2"+
53802 		"\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da"+
53803 		"\u01dc\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f0\u01f2"+
53804 		"\u01f4\u01f6\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a"+
53805 		"\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222"+
53806 		"\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u0234\u0236\u0238\u023a"+
53807 		"\u023c\u023e\u0240\u0242\u0244\u0246\u0248\u024a\u024c\u024e\u0250\u0252"+
53808 		"\u0254\u0256\u0258\u025a\u025c\u025e\u0260\u0262\u0264\u0266\u0268\u026a"+
53809 		"\u026c\u026e\u0270\u0272\u0274\u0276\u0278\u027a\u027c\u027e\u0280\u0282"+
53810 		"\u0284\u0286\u0288\u028a\u028c\u028e\u0290\u0292\u0294\u0296\u0298\u029a"+
53811 		"\u029c\u029e\u02a0\u02a2\u02a4\u02a6\u02a8\u02aa\u02ac\u02ae\u02b0\u02b2"+
53812 		"\u02b4\u02b6\u02b8\u02ba\u02bc\u02be\u02c0\u02c2\u02c4\u02c6\u02c8\u02ca"+
53813 		"\u02cc\u02ce\u02d0\u02d2\u02d4\u02d6\u02d8\u02da\u02dc\u02de\u02e0\u02e2"+
53814 		"\u02e4\u02e6\u02e8\u02ea\u02ec\u02ee\u02f0\u02f2\u02f4\u02f6\u02f8\u02fa"+
53815 		"\u02fc\u02fe\u0300\u0302\u0304\u0306\u0308\u030a\u030c\u030e\u0310\u0312"+
53816 		"\u0314\u0316\u0318\u031a\u031c\u031e\u0320\u0322\u0324\u0326\u0328\u032a"+
53817 		"\u032c\u032e\u0330\u0332\u0334\u0336\u0338\u033a\u033c\u033e\u0340\u0342"+
53818 		"\u0344\u0346\u0348\u034a\u034c\u034e\u0350\u0352\u0354\u0356\u0358\u035a"+
53819 		"\u035c\u035e\u0360\u0362\u0364\u0366\u0368\u036a\u036c\u036e\u0370\u0372"+
53820 		"\u0374\u0376\u0378\u037a\u037c\u037e\u0380\u0382\u0384\u0386\u0388\u038a"+
53821 		"\u038c\u038e\u0390\u0392\u0394\u0396\u0398\u039a\u039c\u039e\u03a0\u03a2"+
53822 		"\u03a4\u03a6\u03a8\u03aa\u03ac\u03ae\u03b0\u03b2\u03b4\u03b6\u03b8\u03ba"+
53823 		"\u03bc\u03be\u03c0\u03c2\u03c4\u03c6\u03c8\u03ca\u03cc\u03ce\u03d0\u03d2"+
53824 		"\u03d4\u03d6\u0000a\u0001\u0000ab\u0002\u0000\u0100\u0100\u013b\u013b"+
53825 		"\u0002\u0000\u02ca\u02ca\u02d1\u02d1\u0001\u0000\u000f\u0010\u0001\u0000"+
53826 		"\u0087\u0089\u0001\u0000mn4\u000056==EGRRTTbbvv{|\u0080\u0081\u0085\u0085"+
53827 		"\u0087\u0087\u008a\u008b\u008d\u0090\u0093\u0099\u009c\u009d\u009f\u009f"+
53828 		"\u00a1\u00a2\u00a4\u00a6\u00a9\u00aa\u00ad\u00ad\u00b0\u00b0\u00b8\u00b8"+
53829 		"\u00c2\u00c2\u00cb\u00cc\u00d0\u00d1\u00d5\u00d5\u00ea\u00ea\u00ec\u00f2"+
53830 		"\u00f4\u00f5\u00fe\u00ff\u0102\u0106\u0108\u0109\u010b\u0115\u0117\u011c"+
53831 		"\u011e\u0126\u0128\u013c\u0144\u01b6\u01b8\u01b8\u01be\u01be\u01ca\u01cc"+
53832 		"\u01f1\u0200\u0203\u0203\u0205\u020a\u020f\u020f\u0214\u0215\u0217\u0219"+
53833 		"\u021b\u021d\u021f\u0228\u0233\u0294\u029d\u029d\u02a2\u02a2\u02a6\u02a6"+
53834 		"\u0002\u0000\u02c8\u02c8\u02ca\u02ca\u0002\u0000\u0004\u0004hh\u0002\u0000"+
53835 		"\u0005\u0005ii\u0002\u0000\u0006\u0006kk\u0002\u0000ln\u00f3\u00f3\u0001"+
53836 		"\u0000rs\u0001\u0000\u0018\u001d\u0003\u0000\u0006\u0007\u000f\u0010\u00ea"+
53837 		"\u00ea\u0001\u0000\u0095\u0099\u0001\u0000\u00f1\u00f2\u0002\u0000\u00a9"+
53838 		"\u00a9\u01b8\u01b8\u0001\u0000xy\u0002\u0000\u0109\u0109\u0113\u0113\b"+
53839 		"\u0000\u0083\u0083\u0087\u0088\u00ad\u00af\u00b1\u00b9\u00ea\u00ea\u015d"+
53840 		"\u015d\u01ba\u01c9\u02c8\u02c8\u0002\u0000\u00f2\u00f2\u0131\u0131\u0002"+
53841 		"\u0000\u0195\u0195\u01a6\u01a6\u0005\u0000\u00f1\u00f1\u0108\u0108\u0127"+
53842 		"\u0127\u012b\u012b\u0192\u0192\t\u0000\u0129\u0129\u0135\u0135\u018e\u018f"+
53843 		"\u0195\u0195\u019e\u019f\u01a3\u01a4\u01a9\u01a9\u01b5\u01b5\u01eb\u01eb"+
53844 		"\u0003\u0000\u0104\u0104\u0127\u0127\u0138\u0138\u0001\u0000\u013e\u013f"+
53845 		"\u0002\u0000\u00b0\u00b0\u0128\u0128\u0003\u0000\u00d8\u00e8\u0214\u0214"+
53846 		"\u0217\u0217\u0001\u0000HI\u0002\u0000\u00ba\u00ba\u00f2\u00f2\u0002\u0000"+
53847 		"\u00ff\u00ff\u0116\u0116\u0002\u0000\u0111\u0111\u0130\u0130\u0001\u0000"+
53848 		"\u0105\u0106\u0001\u000001\u0002\u0000ll\u009a\u009a\u0003\u0000\u00f1"+
53849 		"\u00f1\u0127\u0127\u012b\u012b\u0002\u0000\u011e\u011f\u012c\u012c\u0001"+
53850 		"\u0000\u01a1\u01a2\u0001\u0000[\\\u0002\u0000\u00f7\u00f7\u0126\u0126"+
53851 		"\u0001\u0000\u009c\u009d\u0003\u0000\u008c\u008c\u008e\u0090\u010b\u010e"+
53852 		"\u0003\u0000;;\u009d\u009d\u0103\u0103\u0002\u0000\u0127\u0127\u01f0\u01f0"+
53853 		"\u0003\u0000XXbb\u00cb\u00cb\u0001\u0000\u01f6\u01f9\u0002\u0000\r\r\u01f6"+
53854 		"\u01f9\u0001\u0000\u0200\u0201\u0001\u0000\u0202\u0205\u0002\u0000\u00cb"+
53855 		"\u00cb\u0206\u0207\u0003\u0000\u00d3\u00d3\u01ca\u01ca\u020e\u020e\u0003"+
53856 		"\u0000\u016e\u016e\u0209\u0209\u0219\u0219\u0002\u0000\u00ff\u00ff\u0222"+
53857 		"\u0222\u0002\u0000rr\u00f9\u00f9\u0001\u0000\u0282\u0283\u0001\u0000\u01f7"+
53858 		"\u01f8\u0003\u0000ab\u0226\u0226\u027c\u027c\u0002\u0000\u0129\u0129\u027a"+
53859 		"\u027b\u0002\u0000\u00cb\u00cb\u0231\u0231\u0001\u0000\u0277\u0279\u0002"+
53860 		"\u0000\u00c9\u00c9\u0274\u0275\u0001\u0000\u00c8\u00c9\u0001\u0000\u022e"+
53861 		"\u022f\u0002\u0000\u00d3\u00d3\u0230\u0230\u0002\u0000\u010e\u010f\u0264"+
53862 		"\u0264\u0002\u0000\u00a6\u00a6\u0262\u0262\u0002\u0000bb\u0103\u0103\u0004"+
53863 		"\u0000rr\u0103\u0103\u0127\u0127\u025d\u025d\u0002\u0000\u010e\u010e\u0264"+
53864 		"\u0264\u0003\u0000XX\u00c8\u00c8\u024e\u024e\u0002\u0000\u0127\u0127\u024c"+
53865 		"\u024d\u0002\u0000\u010f\u010f\u0238\u0238\u0002\u0000OOrr\u0002\u0000"+
53866 		"YY]]\u0002\u0000XX[\\\u0002\u0000ZZ]]\u0001\u0000\u01cb\u01cc\u0002\u0000"+
53867 		"uu\u011b\u011b\u0003\u0000\u00bf\u00bf\u011b\u011b\u0145\u0145\u0002\u0000"+
53868 		"\u00bf\u00c0\u011b\u011b\u0002\u0000\u009d\u009d\u00c4\u00c4\u0001\u0000"+
53869 		"\u02b5\u02b6\u0002\u0000\u0103\u0103\u02b8\u02b8\u0002\u0000UUgg\u0002"+
53870 		"\u0000\u00cc\u00cc\u0148\u0148\u0002\u0000\u0140\u0140\u0159\u0159\u0002"+
53871 		"\u0000\u00cc\u00cc\u0186\u0186\u0001\u0000\u014b\u014c\u0001\u0000\u016e"+
53872 		"\u016f\u0002\u0000\u00cc\u00cc\u014d\u014d\u0002\u0000..\u013e\u013e\u0002"+
53873 		"\u0000\u0143\u0143\u02a1\u02a1\u0005\u000066\u00cc\u00cc\u00fd\u00fe\u0122"+
53874 		"\u0122\u0128\u0128\u0002\u0000UUff\u0002\u0000\u02cf\u02cf\u02d1\u02d1"+
53875 		"\u0002\u0000\u02a8\u02a8\u02ad\u02ad\u1f9e\u0000\u0413\u0001\u0000\u0000"+
53876 		"\u0000\u0002\u0418\u0001\u0000\u0000\u0000\u0004\u0426\u0001\u0000\u0000"+
53877 		"\u0000\u0006\u0428\u0001\u0000\u0000\u0000\b\u042c\u0001\u0000\u0000\u0000"+
53878 		"\n\u042e\u0001\u0000\u0000\u0000\f\u043e\u0001\u0000\u0000\u0000\u000e"+
53879 		"\u0445\u0001\u0000\u0000\u0000\u0010\u0455\u0001\u0000\u0000\u0000\u0012"+
53880 		"\u0459\u0001\u0000\u0000\u0000\u0014\u0461\u0001\u0000\u0000\u0000\u0016"+
53881 		"\u0465\u0001\u0000\u0000\u0000\u0018\u046b\u0001\u0000\u0000\u0000\u001a"+
53882 		"\u0474\u0001\u0000\u0000\u0000\u001c\u0476\u0001\u0000\u0000\u0000\u001e"+
53883 		"\u0479\u0001\u0000\u0000\u0000 \u0484\u0001\u0000\u0000\u0000\"\u0486"+
53884 		"\u0001\u0000\u0000\u0000$\u0488\u0001\u0000\u0000\u0000&\u048a\u0001\u0000"+
53885 		"\u0000\u0000(\u048c\u0001\u0000\u0000\u0000*\u0490\u0001\u0000\u0000\u0000"+
53886 		",\u0494\u0001\u0000\u0000\u0000.\u0496\u0001\u0000\u0000\u00000\u0498"+
53887 		"\u0001\u0000\u0000\u00002\u049a\u0001\u0000\u0000\u00004\u049c\u0001\u0000"+
53888 		"\u0000\u00006\u04a1\u0001\u0000\u0000\u00008\u04a8\u0001\u0000\u0000\u0000"+
53889 		":\u04b2\u0001\u0000\u0000\u0000<\u04b9\u0001\u0000\u0000\u0000>\u04c0"+
53890 		"\u0001\u0000\u0000\u0000@\u04d0\u0001\u0000\u0000\u0000B\u04d7\u0001\u0000"+
53891 		"\u0000\u0000D\u04db\u0001\u0000\u0000\u0000F\u04dd\u0001\u0000\u0000\u0000"+
53892 		"H\u04e2\u0001\u0000\u0000\u0000J\u04e8\u0001\u0000\u0000\u0000L\u04ed"+
53893 		"\u0001\u0000\u0000\u0000N\u04ef\u0001\u0000\u0000\u0000P\u04f1\u0001\u0000"+
53894 		"\u0000\u0000R\u04fc\u0001\u0000\u0000\u0000T\u0508\u0001\u0000\u0000\u0000"+
53895 		"V\u0515\u0001\u0000\u0000\u0000X\u0517\u0001\u0000\u0000\u0000Z\u0519"+
53896 		"\u0001\u0000\u0000\u0000\\\u051d\u0001\u0000\u0000\u0000^\u051f\u0001"+
53897 		"\u0000\u0000\u0000`\u052a\u0001\u0000\u0000\u0000b\u0537\u0001\u0000\u0000"+
53898 		"\u0000d\u054a\u0001\u0000\u0000\u0000f\u054c\u0001\u0000\u0000\u0000h"+
53899 		"\u054e\u0001\u0000\u0000\u0000j\u0555\u0001\u0000\u0000\u0000l\u0557\u0001"+
53900 		"\u0000\u0000\u0000n\u0571\u0001\u0000\u0000\u0000p\u059e\u0001\u0000\u0000"+
53901 		"\u0000r\u05a0\u0001\u0000\u0000\u0000t\u05e7\u0001\u0000\u0000\u0000v"+
53902 		"\u05f4\u0001\u0000\u0000\u0000x\u05f6\u0001\u0000\u0000\u0000z\u0608\u0001"+
53903 		"\u0000\u0000\u0000|\u060a\u0001\u0000\u0000\u0000~\u0611\u0001\u0000\u0000"+
53904 		"\u0000\u0080\u0613\u0001\u0000\u0000\u0000\u0082\u061a\u0001\u0000\u0000"+
53905 		"\u0000\u0084\u0625\u0001\u0000\u0000\u0000\u0086\u0635\u0001\u0000\u0000"+
53906 		"\u0000\u0088\u0640\u0001\u0000\u0000\u0000\u008a\u064c\u0001\u0000\u0000"+
53907 		"\u0000\u008c\u0676\u0001\u0000\u0000\u0000\u008e\u0678\u0001\u0000\u0000"+
53908 		"\u0000\u0090\u0691\u0001\u0000\u0000\u0000\u0092\u0693\u0001\u0000\u0000"+
53909 		"\u0000\u0094\u06a1\u0001\u0000\u0000\u0000\u0096\u06a6\u0001\u0000\u0000"+
53910 		"\u0000\u0098\u06ad\u0001\u0000\u0000\u0000\u009a\u06af\u0001\u0000\u0000"+
53911 		"\u0000\u009c\u06c9\u0001\u0000\u0000\u0000\u009e\u06d5\u0001\u0000\u0000"+
53912 		"\u0000\u00a0\u06e5\u0001\u0000\u0000\u0000\u00a2\u06e7\u0001\u0000\u0000"+
53913 		"\u0000\u00a4\u06ef\u0001\u0000\u0000\u0000\u00a6\u06fb\u0001\u0000\u0000"+
53914 		"\u0000\u00a8\u0708\u0001\u0000\u0000\u0000\u00aa\u070b\u0001\u0000\u0000"+
53915 		"\u0000\u00ac\u0718\u0001\u0000\u0000\u0000\u00ae\u0722\u0001\u0000\u0000"+
53916 		"\u0000\u00b0\u0727\u0001\u0000\u0000\u0000\u00b2\u0729\u0001\u0000\u0000"+
53917 		"\u0000\u00b4\u0730\u0001\u0000\u0000\u0000\u00b6\u0738\u0001\u0000\u0000"+
53918 		"\u0000\u00b8\u0740\u0001\u0000\u0000\u0000\u00ba\u0742\u0001\u0000\u0000"+
53919 		"\u0000\u00bc\u0753\u0001\u0000\u0000\u0000\u00be\u0755\u0001\u0000\u0000"+
53920 		"\u0000\u00c0\u0759\u0001\u0000\u0000\u0000\u00c2\u075e\u0001\u0000\u0000"+
53921 		"\u0000\u00c4\u0761\u0001\u0000\u0000\u0000\u00c6\u0763\u0001\u0000\u0000"+
53922 		"\u0000\u00c8\u0766\u0001\u0000\u0000\u0000\u00ca\u076c\u0001\u0000\u0000"+
53923 		"\u0000\u00cc\u0776\u0001\u0000\u0000\u0000\u00ce\u0778\u0001\u0000\u0000"+
53924 		"\u0000\u00d0\u077c\u0001\u0000\u0000\u0000\u00d2\u078a\u0001\u0000\u0000"+
53925 		"\u0000\u00d4\u0791\u0001\u0000\u0000\u0000\u00d6\u0793\u0001\u0000\u0000"+
53926 		"\u0000\u00d8\u079b\u0001\u0000\u0000\u0000\u00da\u079d\u0001\u0000\u0000"+
53927 		"\u0000\u00dc\u079f\u0001\u0000\u0000\u0000\u00de\u07a7\u0001\u0000\u0000"+
53928 		"\u0000\u00e0\u07a9\u0001\u0000\u0000\u0000\u00e2\u07ab\u0001\u0000\u0000"+
53929 		"\u0000\u00e4\u07ad\u0001\u0000\u0000\u0000\u00e6\u07af\u0001\u0000\u0000"+
53930 		"\u0000\u00e8\u07b1\u0001\u0000\u0000\u0000\u00ea\u07b4\u0001\u0000\u0000"+
53931 		"\u0000\u00ec\u07b6\u0001\u0000\u0000\u0000\u00ee\u07b8\u0001\u0000\u0000"+
53932 		"\u0000\u00f0\u07c3\u0001\u0000\u0000\u0000\u00f2\u07c7\u0001\u0000\u0000"+
53933 		"\u0000\u00f4\u07c9\u0001\u0000\u0000\u0000\u00f6\u07cf\u0001\u0000\u0000"+
53934 		"\u0000\u00f8\u07d8\u0001\u0000\u0000\u0000\u00fa\u07dd\u0001\u0000\u0000"+
53935 		"\u0000\u00fc\u07e7\u0001\u0000\u0000\u0000\u00fe\u07f1\u0001\u0000\u0000"+
53936 		"\u0000\u0100\u07fa\u0001\u0000\u0000\u0000\u0102\u0805\u0001\u0000\u0000"+
53937 		"\u0000\u0104\u080e\u0001\u0000\u0000\u0000\u0106\u081b\u0001\u0000\u0000"+
53938 		"\u0000\u0108\u0824\u0001\u0000\u0000\u0000\u010a\u082f\u0001\u0000\u0000"+
53939 		"\u0000\u010c\u0839\u0001\u0000\u0000\u0000\u010e\u0845\u0001\u0000\u0000"+
53940 		"\u0000\u0110\u084b\u0001\u0000\u0000\u0000\u0112\u0851\u0001\u0000\u0000"+
53941 		"\u0000\u0114\u0856\u0001\u0000\u0000\u0000\u0116\u085d\u0001\u0000\u0000"+
53942 		"\u0000\u0118\u0866\u0001\u0000\u0000\u0000\u011a\u0871\u0001\u0000\u0000"+
53943 		"\u0000\u011c\u087a\u0001\u0000\u0000\u0000\u011e\u0881\u0001\u0000\u0000"+
53944 		"\u0000\u0120\u088a\u0001\u0000\u0000\u0000\u0122\u0897\u0001\u0000\u0000"+
53945 		"\u0000\u0124\u08a4\u0001\u0000\u0000\u0000\u0126\u08b1\u0001\u0000\u0000"+
53946 		"\u0000\u0128\u08be\u0001\u0000\u0000\u0000\u012a\u08d3\u0001\u0000\u0000"+
53947 		"\u0000\u012c\u08e0\u0001\u0000\u0000\u0000\u012e\u08e4\u0001\u0000\u0000"+
53948 		"\u0000\u0130\u08eb\u0001\u0000\u0000\u0000\u0132\u08ef\u0001\u0000\u0000"+
53949 		"\u0000\u0134\u0905\u0001\u0000\u0000\u0000\u0136\u0926\u0001\u0000\u0000"+
53950 		"\u0000\u0138\u092c\u0001\u0000\u0000\u0000\u013a\u093d\u0001\u0000\u0000"+
53951 		"\u0000\u013c\u0941\u0001\u0000\u0000\u0000\u013e\u0943\u0001\u0000\u0000"+
53952 		"\u0000\u0140\u0947\u0001\u0000\u0000\u0000\u0142\u095b\u0001\u0000\u0000"+
53953 		"\u0000\u0144\u095d\u0001\u0000\u0000\u0000\u0146\u099e\u0001\u0000\u0000"+
53954 		"\u0000\u0148\u09a0\u0001\u0000\u0000\u0000\u014a\u09b0\u0001\u0000\u0000"+
53955 		"\u0000\u014c\u09b9\u0001\u0000\u0000\u0000\u014e\u09c2\u0001\u0000\u0000"+
53956 		"\u0000\u0150\u09df\u0001\u0000\u0000\u0000\u0152\u09e3\u0001\u0000\u0000"+
53957 		"\u0000\u0154\u09ea\u0001\u0000\u0000\u0000\u0156\u09f2\u0001\u0000\u0000"+
53958 		"\u0000\u0158\u09f4\u0001\u0000\u0000\u0000\u015a\u0a08\u0001\u0000\u0000"+
53959 		"\u0000\u015c\u0a0a\u0001\u0000\u0000\u0000\u015e\u0a10\u0001\u0000\u0000"+
53960 		"\u0000\u0160\u0a13\u0001\u0000\u0000\u0000\u0162\u0a1c\u0001\u0000\u0000"+
53961 		"\u0000\u0164\u0a1e\u0001\u0000\u0000\u0000\u0166\u0a27\u0001\u0000\u0000"+
53962 		"\u0000\u0168\u0a3d\u0001\u0000\u0000\u0000\u016a\u0a44\u0001\u0000\u0000"+
53963 		"\u0000\u016c\u0a46\u0001\u0000\u0000\u0000\u016e\u0a50\u0001\u0000\u0000"+
53964 		"\u0000\u0170\u0a5e\u0001\u0000\u0000\u0000\u0172\u0a6d\u0001\u0000\u0000"+
53965 		"\u0000\u0174\u0a6f\u0001\u0000\u0000\u0000\u0176\u0a72\u0001\u0000\u0000"+
53966 		"\u0000\u0178\u0a80\u0001\u0000\u0000\u0000\u017a\u0a82\u0001\u0000\u0000"+
53967 		"\u0000\u017c\u0a8f\u0001\u0000\u0000\u0000\u017e\u0a97\u0001\u0000\u0000"+
53968 		"\u0000\u0180\u0a9e\u0001\u0000\u0000\u0000\u0182\u0aa5\u0001\u0000\u0000"+
53969 		"\u0000\u0184\u0aa8\u0001\u0000\u0000\u0000\u0186\u0ab1\u0001\u0000\u0000"+
53970 		"\u0000\u0188\u0ab6\u0001\u0000\u0000\u0000\u018a\u0abc\u0001\u0000\u0000"+
53971 		"\u0000\u018c\u0ac8\u0001\u0000\u0000\u0000\u018e\u0ae0\u0001\u0000\u0000"+
53972 		"\u0000\u0190\u0ae2\u0001\u0000\u0000\u0000\u0192\u0aed\u0001\u0000\u0000"+
53973 		"\u0000\u0194\u0b00\u0001\u0000\u0000\u0000\u0196\u0b07\u0001\u0000\u0000"+
53974 		"\u0000\u0198\u0b16\u0001\u0000\u0000\u0000\u019a\u0b53\u0001\u0000\u0000"+
53975 		"\u0000\u019c\u0b55\u0001\u0000\u0000\u0000\u019e\u0b61\u0001\u0000\u0000"+
53976 		"\u0000\u01a0\u0b73\u0001\u0000\u0000\u0000\u01a2\u0b79\u0001\u0000\u0000"+
53977 		"\u0000\u01a4\u0b8b\u0001\u0000\u0000\u0000\u01a6\u0b8d\u0001\u0000\u0000"+
53978 		"\u0000\u01a8\u0bb4\u0001\u0000\u0000\u0000\u01aa\u0bb6\u0001\u0000\u0000"+
53979 		"\u0000\u01ac\u0bcc\u0001\u0000\u0000\u0000\u01ae\u0bda\u0001\u0000\u0000"+
53980 		"\u0000\u01b0\u0bde\u0001\u0000\u0000\u0000\u01b2\u0be5\u0001\u0000\u0000"+
53981 		"\u0000\u01b4\u0bf3\u0001\u0000\u0000\u0000\u01b6\u0bf7\u0001\u0000\u0000"+
53982 		"\u0000\u01b8\u0c05\u0001\u0000\u0000\u0000\u01ba\u0c09\u0001\u0000\u0000"+
53983 		"\u0000\u01bc\u0c18\u0001\u0000\u0000\u0000\u01be\u0c1a\u0001\u0000\u0000"+
53984 		"\u0000\u01c0\u0c24\u0001\u0000\u0000\u0000\u01c2\u0c38\u0001\u0000\u0000"+
53985 		"\u0000\u01c4\u0c42\u0001\u0000\u0000\u0000\u01c6\u0c4f\u0001\u0000\u0000"+
53986 		"\u0000\u01c8\u0c53\u0001\u0000\u0000\u0000\u01ca\u0c70\u0001\u0000\u0000"+
53987 		"\u0000\u01cc\u0c72\u0001\u0000\u0000\u0000\u01ce\u0c74\u0001\u0000\u0000"+
53988 		"\u0000\u01d0\u0c80\u0001\u0000\u0000\u0000\u01d2\u0c8d\u0001\u0000\u0000"+
53989 		"\u0000\u01d4\u0c95\u0001\u0000\u0000\u0000\u01d6\u0c9b\u0001\u0000\u0000"+
53990 		"\u0000\u01d8\u0cad\u0001\u0000\u0000\u0000\u01da\u0cb5\u0001\u0000\u0000"+
53991 		"\u0000\u01dc\u0cbc\u0001\u0000\u0000\u0000\u01de\u0cc5\u0001\u0000\u0000"+
53992 		"\u0000\u01e0\u0cd4\u0001\u0000\u0000\u0000\u01e2\u0cdb\u0001\u0000\u0000"+
53993 		"\u0000\u01e4\u0ce4\u0001\u0000\u0000\u0000\u01e6\u0ce6\u0001\u0000\u0000"+
53994 		"\u0000\u01e8\u0ceb\u0001\u0000\u0000\u0000\u01ea\u0cee\u0001\u0000\u0000"+
53995 		"\u0000\u01ec\u0cf9\u0001\u0000\u0000\u0000\u01ee\u0cfb\u0001\u0000\u0000"+
53996 		"\u0000\u01f0\u0d1b\u0001\u0000\u0000\u0000\u01f2\u0d1d\u0001\u0000\u0000"+
53997 		"\u0000\u01f4\u0d2c\u0001\u0000\u0000\u0000\u01f6\u0d40\u0001\u0000\u0000"+
53998 		"\u0000\u01f8\u0d77\u0001\u0000\u0000\u0000\u01fa\u0d7f\u0001\u0000\u0000"+
53999 		"\u0000\u01fc\u0d81\u0001\u0000\u0000\u0000\u01fe\u0d93\u0001\u0000\u0000"+
54000 		"\u0000\u0200\u0daa\u0001\u0000\u0000\u0000\u0202\u0dc0\u0001\u0000\u0000"+
54001 		"\u0000\u0204\u0dcc\u0001\u0000\u0000\u0000\u0206\u0dce\u0001\u0000\u0000"+
54002 		"\u0000\u0208\u0de6\u0001\u0000\u0000\u0000\u020a\u0de8\u0001\u0000\u0000"+
54003 		"\u0000\u020c\u0dee\u0001\u0000\u0000\u0000\u020e\u0dfc\u0001\u0000\u0000"+
54004 		"\u0000\u0210\u0dfe\u0001\u0000\u0000\u0000\u0212\u0e2c\u0001\u0000\u0000"+
54005 		"\u0000\u0214\u0e40\u0001\u0000\u0000\u0000\u0216\u0e42\u0001\u0000\u0000"+
54006 		"\u0000\u0218\u0e5d\u0001\u0000\u0000\u0000\u021a\u0e72\u0001\u0000\u0000"+
54007 		"\u0000\u021c\u0e75\u0001\u0000\u0000\u0000\u021e\u0e90\u0001\u0000\u0000"+
54008 		"\u0000\u0220\u0e92\u0001\u0000\u0000\u0000\u0222\u0eae\u0001\u0000\u0000"+
54009 		"\u0000\u0224\u0eb0\u0001\u0000\u0000\u0000\u0226\u0ec7\u0001\u0000\u0000"+
54010 		"\u0000\u0228\u0edf\u0001\u0000\u0000\u0000\u022a\u0ef8\u0001\u0000\u0000"+
54011 		"\u0000\u022c\u0f03\u0001\u0000\u0000\u0000\u022e\u0f1f\u0001\u0000\u0000"+
54012 		"\u0000\u0230\u0f2b\u0001\u0000\u0000\u0000\u0232\u0f38\u0001\u0000\u0000"+
54013 		"\u0000\u0234\u0f3a\u0001\u0000\u0000\u0000\u0236\u0f46\u0001\u0000\u0000"+
54014 		"\u0000\u0238\u0f4f\u0001\u0000\u0000\u0000\u023a\u0f5f\u0001\u0000\u0000"+
54015 		"\u0000\u023c\u0f84\u0001\u0000\u0000\u0000\u023e\u0f9c\u0001\u0000\u0000"+
54016 		"\u0000\u0240\u0fa7\u0001\u0000\u0000\u0000\u0242\u0fb3\u0001\u0000\u0000"+
54017 		"\u0000\u0244\u0fb5\u0001\u0000\u0000\u0000\u0246\u0fbe\u0001\u0000\u0000"+
54018 		"\u0000\u0248\u0fd6\u0001\u0000\u0000\u0000\u024a\u1005\u0001\u0000\u0000"+
54019 		"\u0000\u024c\u1007\u0001\u0000\u0000\u0000\u024e\u1012\u0001\u0000\u0000"+
54020 		"\u0000\u0250\u1030\u0001\u0000\u0000\u0000\u0252\u1034\u0001\u0000\u0000"+
54021 		"\u0000\u0254\u105a\u0001\u0000\u0000\u0000\u0256\u1073\u0001\u0000\u0000"+
54022 		"\u0000\u0258\u10b3\u0001\u0000\u0000\u0000\u025a\u10f8\u0001\u0000\u0000"+
54023 		"\u0000\u025c\u10fa\u0001\u0000\u0000\u0000\u025e\u1105\u0001\u0000\u0000"+
54024 		"\u0000\u0260\u111c\u0001\u0000\u0000\u0000\u0262\u1128\u0001\u0000\u0000"+
54025 		"\u0000\u0264\u1160\u0001\u0000\u0000\u0000\u0266\u116e\u0001\u0000\u0000"+
54026 		"\u0000\u0268\u117d\u0001\u0000\u0000\u0000\u026a\u1187\u0001\u0000\u0000"+
54027 		"\u0000\u026c\u11b4\u0001\u0000\u0000\u0000\u026e\u11ba\u0001\u0000\u0000"+
54028 		"\u0000\u0270\u11d2\u0001\u0000\u0000\u0000\u0272\u11d6\u0001\u0000\u0000"+
54029 		"\u0000\u0274\u11f8\u0001\u0000\u0000\u0000\u0276\u11fa\u0001\u0000\u0000"+
54030 		"\u0000\u0278\u1219\u0001\u0000\u0000\u0000\u027a\u121b\u0001\u0000\u0000"+
54031 		"\u0000\u027c\u1222\u0001\u0000\u0000\u0000\u027e\u123f\u0001\u0000\u0000"+
54032 		"\u0000\u0280\u1245\u0001\u0000\u0000\u0000\u0282\u125a\u0001\u0000\u0000"+
54033 		"\u0000\u0284\u125c\u0001\u0000\u0000\u0000\u0286\u129e\u0001\u0000\u0000"+
54034 		"\u0000\u0288\u12ad\u0001\u0000\u0000\u0000\u028a\u12b5\u0001\u0000\u0000"+
54035 		"\u0000\u028c\u12cc\u0001\u0000\u0000\u0000\u028e\u12d5\u0001\u0000\u0000"+
54036 		"\u0000\u0290\u12dd\u0001\u0000\u0000\u0000\u0292\u12df\u0001\u0000\u0000"+
54037 		"\u0000\u0294\u12ed\u0001\u0000\u0000\u0000\u0296\u12ef\u0001\u0000\u0000"+
54038 		"\u0000\u0298\u12fa\u0001\u0000\u0000\u0000\u029a\u130b\u0001\u0000\u0000"+
54039 		"\u0000\u029c\u1314\u0001\u0000\u0000\u0000\u029e\u131b\u0001\u0000\u0000"+
54040 		"\u0000\u02a0\u131f\u0001\u0000\u0000\u0000\u02a2\u1321\u0001\u0000\u0000"+
54041 		"\u0000\u02a4\u132c\u0001\u0000\u0000\u0000\u02a6\u133f\u0001\u0000\u0000"+
54042 		"\u0000\u02a8\u135b\u0001\u0000\u0000\u0000\u02aa\u135e\u0001\u0000\u0000"+
54043 		"\u0000\u02ac\u1378\u0001\u0000\u0000\u0000\u02ae\u1381\u0001\u0000\u0000"+
54044 		"\u0000\u02b0\u1390\u0001\u0000\u0000\u0000\u02b2\u1398\u0001\u0000\u0000"+
54045 		"\u0000\u02b4\u139c\u0001\u0000\u0000\u0000\u02b6\u13a5\u0001\u0000\u0000"+
54046 		"\u0000\u02b8\u13b2\u0001\u0000\u0000\u0000\u02ba\u13c1\u0001\u0000\u0000"+
54047 		"\u0000\u02bc\u13c5\u0001\u0000\u0000\u0000\u02be\u13de\u0001\u0000\u0000"+
54048 		"\u0000\u02c0\u13e2\u0001\u0000\u0000\u0000\u02c2\u13e5\u0001\u0000\u0000"+
54049 		"\u0000\u02c4\u13fa\u0001\u0000\u0000\u0000\u02c6\u1412\u0001\u0000\u0000"+
54050 		"\u0000\u02c8\u1414\u0001\u0000\u0000\u0000\u02ca\u1422\u0001\u0000\u0000"+
54051 		"\u0000\u02cc\u1424\u0001\u0000\u0000\u0000\u02ce\u1434\u0001\u0000\u0000"+
54052 		"\u0000\u02d0\u144d\u0001\u0000\u0000\u0000\u02d2\u1454\u0001\u0000\u0000"+
54053 		"\u0000\u02d4\u1472\u0001\u0000\u0000\u0000\u02d6\u1474\u0001\u0000\u0000"+
54054 		"\u0000\u02d8\u1494\u0001\u0000\u0000\u0000\u02da\u1496\u0001\u0000\u0000"+
54055 		"\u0000\u02dc\u1498\u0001\u0000\u0000\u0000\u02de\u149b\u0001\u0000\u0000"+
54056 		"\u0000\u02e0\u149e\u0001\u0000\u0000\u0000\u02e2\u14a6\u0001\u0000\u0000"+
54057 		"\u0000\u02e4\u14c7\u0001\u0000\u0000\u0000\u02e6\u14e7\u0001\u0000\u0000"+
54058 		"\u0000\u02e8\u14ed\u0001\u0000\u0000\u0000\u02ea\u14ef\u0001\u0000\u0000"+
54059 		"\u0000\u02ec\u14f2\u0001\u0000\u0000\u0000\u02ee\u14fc\u0001\u0000\u0000"+
54060 		"\u0000\u02f0\u14ff\u0001\u0000\u0000\u0000\u02f2\u1503\u0001\u0000\u0000"+
54061 		"\u0000\u02f4\u1506\u0001\u0000\u0000\u0000\u02f6\u150e\u0001\u0000\u0000"+
54062 		"\u0000\u02f8\u1515\u0001\u0000\u0000\u0000\u02fa\u1521\u0001\u0000\u0000"+
54063 		"\u0000\u02fc\u1529\u0001\u0000\u0000\u0000\u02fe\u1532\u0001\u0000\u0000"+
54064 		"\u0000\u0300\u1538\u0001\u0000\u0000\u0000\u0302\u1580\u0001\u0000\u0000"+
54065 		"\u0000\u0304\u15b8\u0001\u0000\u0000\u0000\u0306\u15ba\u0001\u0000\u0000"+
54066 		"\u0000\u0308\u15c0\u0001\u0000\u0000\u0000\u030a\u1600\u0001\u0000\u0000"+
54067 		"\u0000\u030c\u1610\u0001\u0000\u0000\u0000\u030e\u1626\u0001\u0000\u0000"+
54068 		"\u0000\u0310\u1630\u0001\u0000\u0000\u0000\u0312\u1641\u0001\u0000\u0000"+
54069 		"\u0000\u0314\u1643\u0001\u0000\u0000\u0000\u0316\u1645\u0001\u0000\u0000"+
54070 		"\u0000\u0318\u1647\u0001\u0000\u0000\u0000\u031a\u164a\u0001\u0000\u0000"+
54071 		"\u0000\u031c\u164f\u0001\u0000\u0000\u0000\u031e\u1666\u0001\u0000\u0000"+
54072 		"\u0000\u0320\u1679\u0001\u0000\u0000\u0000\u0322\u168b\u0001\u0000\u0000"+
54073 		"\u0000\u0324\u168f\u0001\u0000\u0000\u0000\u0326\u169b\u0001\u0000\u0000"+
54074 		"\u0000\u0328\u16a2\u0001\u0000\u0000\u0000\u032a\u16a6\u0001\u0000\u0000"+
54075 		"\u0000\u032c\u16a8\u0001\u0000\u0000\u0000\u032e\u16b0\u0001\u0000\u0000"+
54076 		"\u0000\u0330\u16c5\u0001\u0000\u0000\u0000\u0332\u16d6\u0001\u0000\u0000"+
54077 		"\u0000\u0334\u16db\u0001\u0000\u0000\u0000\u0336\u16f0\u0001\u0000\u0000"+
54078 		"\u0000\u0338\u1701\u0001\u0000\u0000\u0000\u033a\u171c\u0001\u0000\u0000"+
54079 		"\u0000\u033c\u172e\u0001\u0000\u0000\u0000\u033e\u177d\u0001\u0000\u0000"+
54080 		"\u0000\u0340\u1791\u0001\u0000\u0000\u0000\u0342\u183a\u0001\u0000\u0000"+
54081 		"\u0000\u0344\u183f\u0001\u0000\u0000\u0000\u0346\u1849\u0001\u0000\u0000"+
54082 		"\u0000\u0348\u1854\u0001\u0000\u0000\u0000\u034a\u185e\u0001\u0000\u0000"+
54083 		"\u0000\u034c\u1867\u0001\u0000\u0000\u0000\u034e\u187d\u0001\u0000\u0000"+
54084 		"\u0000\u0350\u188a\u0001\u0000\u0000\u0000\u0352\u1891\u0001\u0000\u0000"+
54085 		"\u0000\u0354\u189d\u0001\u0000\u0000\u0000\u0356\u18aa\u0001\u0000\u0000"+
54086 		"\u0000\u0358\u18b7\u0001\u0000\u0000\u0000\u035a\u18c2\u0001\u0000\u0000"+
54087 		"\u0000\u035c\u18ce\u0001\u0000\u0000\u0000\u035e\u18e0\u0001\u0000\u0000"+
54088 		"\u0000\u0360\u18ec\u0001\u0000\u0000\u0000\u0362\u18f9\u0001\u0000\u0000"+
54089 		"\u0000\u0364\u1906\u0001\u0000\u0000\u0000\u0366\u1912\u0001\u0000\u0000"+
54090 		"\u0000\u0368\u1925\u0001\u0000\u0000\u0000\u036a\u1929\u0001\u0000\u0000"+
54091 		"\u0000\u036c\u1936\u0001\u0000\u0000\u0000\u036e\u1943\u0001\u0000\u0000"+
54092 		"\u0000\u0370\u194c\u0001\u0000\u0000\u0000\u0372\u1956\u0001\u0000\u0000"+
54093 		"\u0000\u0374\u1958\u0001\u0000\u0000\u0000\u0376\u195a\u0001\u0000\u0000"+
54094 		"\u0000\u0378\u1986\u0001\u0000\u0000\u0000\u037a\u1988\u0001\u0000\u0000"+
54095 		"\u0000\u037c\u198a\u0001\u0000\u0000\u0000\u037e\u198c\u0001\u0000\u0000"+
54096 		"\u0000\u0380\u1994\u0001\u0000\u0000\u0000\u0382\u19a0\u0001\u0000\u0000"+
54097 		"\u0000\u0384\u19d2\u0001\u0000\u0000\u0000\u0386\u19df\u0001\u0000\u0000"+
54098 		"\u0000\u0388\u19ec\u0001\u0000\u0000\u0000\u038a\u1a14\u0001\u0000\u0000"+
54099 		"\u0000\u038c\u1a24\u0001\u0000\u0000\u0000\u038e\u1a3a\u0001\u0000\u0000"+
54100 		"\u0000\u0390\u1a3c\u0001\u0000\u0000\u0000\u0392\u1a4a\u0001\u0000\u0000"+
54101 		"\u0000\u0394\u1a54\u0001\u0000\u0000\u0000\u0396\u1a56\u0001\u0000\u0000"+
54102 		"\u0000\u0398\u1a58\u0001\u0000\u0000\u0000\u039a\u1a5a\u0001\u0000\u0000"+
54103 		"\u0000\u039c\u1a5f\u0001\u0000\u0000\u0000\u039e\u1a66\u0001\u0000\u0000"+
54104 		"\u0000\u03a0\u1a96\u0001\u0000\u0000\u0000\u03a2\u1a98\u0001\u0000\u0000"+
54105 		"\u0000\u03a4\u1a9f\u0001\u0000\u0000\u0000\u03a6\u1aa6\u0001\u0000\u0000"+
54106 		"\u0000\u03a8\u1ab5\u0001\u0000\u0000\u0000\u03aa\u1ac3\u0001\u0000\u0000"+
54107 		"\u0000\u03ac\u1ac5\u0001\u0000\u0000\u0000\u03ae\u1aed\u0001\u0000\u0000"+
54108 		"\u0000\u03b0\u1aef\u0001\u0000\u0000\u0000\u03b2\u1af1\u0001\u0000\u0000"+
54109 		"\u0000\u03b4\u1b04\u0001\u0000\u0000\u0000\u03b6\u1b0c\u0001\u0000\u0000"+
54110 		"\u0000\u03b8\u1b1a\u0001\u0000\u0000\u0000\u03ba\u1b1c\u0001\u0000\u0000"+
54111 		"\u0000\u03bc\u1b28\u0001\u0000\u0000\u0000\u03be\u1b3f\u0001\u0000\u0000"+
54112 		"\u0000\u03c0\u1b41\u0001\u0000\u0000\u0000\u03c2\u1b44\u0001\u0000\u0000"+
54113 		"\u0000\u03c4\u1b51\u0001\u0000\u0000\u0000\u03c6\u1b53\u0001\u0000\u0000"+
54114 		"\u0000\u03c8\u1b6a\u0001\u0000\u0000\u0000\u03ca\u1b6c\u0001\u0000\u0000"+
54115 		"\u0000\u03cc\u1b70\u0001\u0000\u0000\u0000\u03ce\u1b80\u0001\u0000\u0000"+
54116 		"\u0000\u03d0\u1ba7\u0001\u0000\u0000\u0000\u03d2\u1ba9\u0001\u0000\u0000"+
54117 		"\u0000\u03d4\u1bb1\u0001\u0000\u0000\u0000\u03d6\u1bb3\u0001\u0000\u0000"+
54118 		"\u0000\u03d8\u0414\u0003\u02ca\u0165\u0000\u03d9\u0414\u0003\u02aa\u0155"+
54119 		"\u0000\u03da\u0414\u0003\u02b8\u015c\u0000\u03db\u0414\u0003\u02c2\u0161"+
54120 		"\u0000\u03dc\u0414\u0003\u00f6{\u0000\u03dd\u0414\u0003\u010a\u0085\u0000"+
54121 		"\u03de\u0414\u0003\u011e\u008f\u0000\u03df\u0414\u0003\u00f2y\u0000\u03e0"+
54122 		"\u0414\u0003\u00f8|\u0000\u03e1\u0414\u0003\u00fc~\u0000\u03e2\u0414\u0003"+
54123 		"\u00fe\u007f\u0000\u03e3\u0414\u0003\u0100\u0080\u0000\u03e4\u0414\u0003"+
54124 		"\u0102\u0081\u0000\u03e5\u0414\u0003\u0104\u0082\u0000\u03e6\u0414\u0003"+
54125 		"\u0106\u0083\u0000\u03e7\u0414\u0003\u0108\u0084\u0000\u03e8\u0414\u0003"+
54126 		"\u0114\u008a\u0000\u03e9\u0414\u0003\u0116\u008b\u0000\u03ea\u0414\u0003"+
54127 		"\u010c\u0086\u0000\u03eb\u0414\u0003\u0118\u008c\u0000\u03ec\u0414\u0003"+
54128 		"\u011a\u008d\u0000\u03ed\u0414\u0003\u0112\u0089\u0000\u03ee\u0414\u0003"+
54129 		"\u011c\u008e\u0000\u03ef\u0414\u0003\u0120\u0090\u0000\u03f0\u0414\u0003"+
54130 		"\u0122\u0091\u0000\u03f1\u0414\u0003\u0124\u0092\u0000\u03f2\u0414\u0003"+
54131 		"\u0126\u0093\u0000\u03f3\u0414\u0003\u0128\u0094\u0000\u03f4\u0414\u0003"+
54132 		"\u012a\u0095\u0000\u03f5\u0414\u0003\u012c\u0096\u0000\u03f6\u0414\u0003"+
54133 		"\u012e\u0097\u0000\u03f7\u0414\u0003\u0130\u0098\u0000\u03f8\u0414\u0003"+
54134 		"\u00fa}\u0000\u03f9\u0414\u0003\u0002\u0001\u0000\u03fa\u0414\u0003\n"+
54135 		"\u0005\u0000\u03fb\u0414\u0003\f\u0006\u0000\u03fc\u0414\u0003\u0006\u0003"+
54136 		"\u0000\u03fd\u0414\u0003\u000e\u0007\u0000\u03fe\u0414\u0003\u0010\b\u0000"+
54137 		"\u03ff\u0414\u0003\u0012\t\u0000\u0400\u0414\u0003\u0014\n\u0000\u0401"+
54138 		"\u0414\u0003\u0016\u000b\u0000\u0402\u0414\u0003\u031a\u018d\u0000\u0403"+
54139 		"\u0414\u0003\u032c\u0196\u0000\u0404\u0414\u0003\u0332\u0199\u0000\u0405"+
54140 		"\u0414\u0003\u0380\u01c0\u0000\u0406\u0414\u0003\u039c\u01ce\u0000\u0407"+
54141 		"\u0414\u0003\u039e\u01cf\u0000\u0408\u0414\u0003\u03a2\u01d1\u0000\u0409"+
54142 		"\u0414\u0003\u03a4\u01d2\u0000\u040a\u0414\u0003\u03a6\u01d3\u0000\u040b"+
54143 		"\u0414\u0003\u03a8\u01d4\u0000\u040c\u0414\u0003\u03ca\u01e5\u0000\u040d"+
54144 		"\u0414\u0003\u03cc\u01e6\u0000\u040e\u0414\u0003\u00ecv\u0000\u040f\u0414"+
54145 		"\u0003\u00eew\u0000\u0410\u0414\u0003\u037e\u01bf\u0000\u0411\u0414\u0003"+
54146 		"\u03d6\u01eb\u0000\u0412\u0414\u0003\u0132\u0099\u0000\u0413\u03d8\u0001"+
54147 		"\u0000\u0000\u0000\u0413\u03d9\u0001\u0000\u0000\u0000\u0413\u03da\u0001"+
54148 		"\u0000\u0000\u0000\u0413\u03db\u0001\u0000\u0000\u0000\u0413\u03dc\u0001"+
54149 		"\u0000\u0000\u0000\u0413\u03dd\u0001\u0000\u0000\u0000\u0413\u03de\u0001"+
54150 		"\u0000\u0000\u0000\u0413\u03df\u0001\u0000\u0000\u0000\u0413\u03e0\u0001"+
54151 		"\u0000\u0000\u0000\u0413\u03e1\u0001\u0000\u0000\u0000\u0413\u03e2\u0001"+
54152 		"\u0000\u0000\u0000\u0413\u03e3\u0001\u0000\u0000\u0000\u0413\u03e4\u0001"+
54153 		"\u0000\u0000\u0000\u0413\u03e5\u0001\u0000\u0000\u0000\u0413\u03e6\u0001"+
54154 		"\u0000\u0000\u0000\u0413\u03e7\u0001\u0000\u0000\u0000\u0413\u03e8\u0001"+
54155 		"\u0000\u0000\u0000\u0413\u03e9\u0001\u0000\u0000\u0000\u0413\u03ea\u0001"+
54156 		"\u0000\u0000\u0000\u0413\u03eb\u0001\u0000\u0000\u0000\u0413\u03ec\u0001"+
54157 		"\u0000\u0000\u0000\u0413\u03ed\u0001\u0000\u0000\u0000\u0413\u03ee\u0001"+
54158 		"\u0000\u0000\u0000\u0413\u03ef\u0001\u0000\u0000\u0000\u0413\u03f0\u0001"+
54159 		"\u0000\u0000\u0000\u0413\u03f1\u0001\u0000\u0000\u0000\u0413\u03f2\u0001"+
54160 		"\u0000\u0000\u0000\u0413\u03f3\u0001\u0000\u0000\u0000\u0413\u03f4\u0001"+
54161 		"\u0000\u0000\u0000\u0413\u03f5\u0001\u0000\u0000\u0000\u0413\u03f6\u0001"+
54162 		"\u0000\u0000\u0000\u0413\u03f7\u0001\u0000\u0000\u0000\u0413\u03f8\u0001"+
54163 		"\u0000\u0000\u0000\u0413\u03f9\u0001\u0000\u0000\u0000\u0413\u03fa\u0001"+
54164 		"\u0000\u0000\u0000\u0413\u03fb\u0001\u0000\u0000\u0000\u0413\u03fc\u0001"+
54165 		"\u0000\u0000\u0000\u0413\u03fd\u0001\u0000\u0000\u0000\u0413\u03fe\u0001"+
54166 		"\u0000\u0000\u0000\u0413\u03ff\u0001\u0000\u0000\u0000\u0413\u0400\u0001"+
54167 		"\u0000\u0000\u0000\u0413\u0401\u0001\u0000\u0000\u0000\u0413\u0402\u0001"+
54168 		"\u0000\u0000\u0000\u0413\u0403\u0001\u0000\u0000\u0000\u0413\u0404\u0001"+
54169 		"\u0000\u0000\u0000\u0413\u0405\u0001\u0000\u0000\u0000\u0413\u0406\u0001"+
54170 		"\u0000\u0000\u0000\u0413\u0407\u0001\u0000\u0000\u0000\u0413\u0408\u0001"+
54171 		"\u0000\u0000\u0000\u0413\u0409\u0001\u0000\u0000\u0000\u0413\u040a\u0001"+
54172 		"\u0000\u0000\u0000\u0413\u040b\u0001\u0000\u0000\u0000\u0413\u040c\u0001"+
54173 		"\u0000\u0000\u0000\u0413\u040d\u0001\u0000\u0000\u0000\u0413\u040e\u0001"+
54174 		"\u0000\u0000\u0000\u0413\u040f\u0001\u0000\u0000\u0000\u0413\u0410\u0001"+
54175 		"\u0000\u0000\u0000\u0413\u0411\u0001\u0000\u0000\u0000\u0413\u0412\u0001"+
54176 		"\u0000\u0000\u0000\u0414\u0416\u0001\u0000\u0000\u0000\u0415\u0417\u0005"+
54177 		"+\u0000\u0000\u0416\u0415\u0001\u0000\u0000\u0000\u0416\u0417\u0001\u0000"+
54178 		"\u0000\u0000\u0417\u0001\u0001\u0000\u0000\u0000\u0418\u0419\u0005:\u0000"+
54179 		"\u0000\u0419\u041a\u0005\u0100\u0000\u0000\u041a\u041b\u0005\u0213\u0000"+
54180 		"\u0000\u041b\u041c\u0005\u0212\u0000\u0000\u041c\u041d\u0003\u0004\u0002"+
54181 		"\u0000\u041d\u0003\u0001\u0000\u0000\u0000\u041e\u041f\u0005\u0216\u0000"+
54182 		"\u0000\u041f\u0427\u0005\u029f\u0000\u0000\u0420\u0421\u0005\u0216\u0000"+
54183 		"\u0000\u0421\u0427\u0005\u02a0\u0000\u0000\u0422\u0423\u0005\u0215\u0000"+
54184 		"\u0000\u0423\u0427\u0005\u0216\u0000\u0000\u0424\u0427\u0005\u0214\u0000"+
54185 		"\u0000\u0425\u0427\u0005\u0217\u0000\u0000\u0426\u041e\u0001\u0000\u0000"+
54186 		"\u0000\u0426\u0420\u0001\u0000\u0000\u0000\u0426\u0422\u0001\u0000\u0000"+
54187 		"\u0000\u0426\u0424\u0001\u0000\u0000\u0000\u0426\u0425\u0001\u0000\u0000"+
54188 		"\u0000\u0427\u0005\u0001\u0000\u0000\u0000\u0428\u0429\u0005:\u0000\u0000"+
54189 		"\u0429\u042a\u0005\u01a5\u0000\u0000\u042a\u042b\u0003\b\u0004\u0000\u042b"+
54190 		"\u0007\u0001\u0000\u0000\u0000\u042c\u042d\u0007\u0000\u0000\u0000\u042d"+
54191 		"\t\u0001\u0000\u0000\u0000\u042e\u042f\u0005}\u0000\u0000\u042f\u043c"+
54192 		"\u0007\u0001\u0000\u0000\u0430\u0433\u0003\u00deo\u0000\u0431\u0433\u0003"+
54193 		"\u00e0p\u0000\u0432\u0430\u0001\u0000\u0000\u0000\u0432\u0431\u0001\u0000"+
54194 		"\u0000\u0000\u0433\u043a\u0001\u0000\u0000\u0000\u0434\u0435\u0005M\u0000"+
54195 		"\u0000\u0435\u0438\u0005\u022b\u0000\u0000\u0436\u0439\u0003\u001c\u000e"+
54196 		"\u0000\u0437\u0439\u0005\u02d1\u0000\u0000\u0438\u0436\u0001\u0000\u0000"+
54197 		"\u0000\u0438\u0437\u0001\u0000\u0000\u0000\u0438\u0439\u0001\u0000\u0000"+
54198 		"\u0000\u0439\u043b\u0001\u0000\u0000\u0000\u043a\u0434\u0001\u0000\u0000"+
54199 		"\u0000\u043a\u043b\u0001\u0000\u0000\u0000\u043b\u043d\u0001\u0000\u0000"+
54200 		"\u0000\u043c\u0432\u0001\u0000\u0000\u0000\u043c\u043d\u0001\u0000\u0000"+
54201 		"\u0000\u043d\u000b\u0001\u0000\u0000\u0000\u043e\u043f\u0005}\u0000\u0000"+
54202 		"\u043f\u0440\u0005\u022a\u0000\u0000\u0440\u0443\u0007\u0001\u0000\u0000"+
54203 		"\u0441\u0444\u0003\u00deo\u0000\u0442\u0444\u0003\u00e0p\u0000\u0443\u0441"+
54204 		"\u0001\u0000\u0000\u0000\u0443\u0442\u0001\u0000\u0000\u0000\u0443\u0444"+
54205 		"\u0001\u0000\u0000\u0000\u0444\r\u0001\u0000\u0000\u0000\u0445\u044b\u0005"+
54206 		"~\u0000\u0000\u0446\u0449\u0007\u0001\u0000\u0000\u0447\u044a\u0003\u00de"+
54207 		"o\u0000\u0448\u044a\u0003\u00e0p\u0000\u0449\u0447\u0001\u0000\u0000\u0000"+
54208 		"\u0449\u0448\u0001\u0000\u0000\u0000\u0449\u044a\u0001\u0000\u0000\u0000"+
54209 		"\u044a\u044c\u0001\u0000\u0000\u0000\u044b\u0446\u0001\u0000\u0000\u0000"+
54210 		"\u044b\u044c\u0001\u0000\u0000\u0000\u044c\u0453\u0001\u0000\u0000\u0000"+
54211 		"\u044d\u044e\u0005M\u0000\u0000\u044e\u044f\u0005\u001f\u0000\u0000\u044f"+
54212 		"\u0450\u0005\u0292\u0000\u0000\u0450\u0451\u0005\u0018\u0000\u0000\u0451"+
54213 		"\u0452\u0007\u0000\u0000\u0000\u0452\u0454\u0005 \u0000\u0000\u0453\u044d"+
54214 		"\u0001\u0000\u0000\u0000\u0453\u0454\u0001\u0000\u0000\u0000\u0454\u000f"+
54215 		"\u0001\u0000\u0000\u0000\u0455\u0457\u0005~\u0000\u0000\u0456\u0458\u0005"+
54216 		"\u022c\u0000\u0000\u0457\u0456\u0001\u0000\u0000\u0000\u0457\u0458\u0001"+
54217 		"\u0000\u0000\u0000\u0458\u0011\u0001\u0000\u0000\u0000\u0459\u045a\u0005"+
54218 		"\u007f\u0000\u0000\u045a\u045f\u0007\u0001\u0000\u0000\u045b\u0460\u0003"+
54219 		"\u00deo\u0000\u045c\u0460\u0003\u00e0p\u0000\u045d\u0460\u0003\u00e2q"+
54220 		"\u0000\u045e\u0460\u0003\u00e4r\u0000\u045f\u045b\u0001\u0000\u0000\u0000"+
54221 		"\u045f\u045c\u0001\u0000\u0000\u0000\u045f\u045d\u0001\u0000\u0000\u0000"+
54222 		"\u045f\u045e\u0001\u0000\u0000\u0000\u045f\u0460\u0001\u0000\u0000\u0000"+
54223 		"\u0460\u0013\u0001\u0000\u0000\u0000\u0461\u0463\u0005\u007f\u0000\u0000"+
54224 		"\u0462\u0464\u0005\u022c\u0000\u0000\u0463\u0462\u0001\u0000\u0000\u0000"+
54225 		"\u0463\u0464\u0001\u0000\u0000\u0000\u0464\u0015\u0001\u0000\u0000\u0000"+
54226 		"\u0465\u0466\u0005\u0137\u0000\u0000\u0466\u0469\u0007\u0001\u0000\u0000"+
54227 		"\u0467\u046a\u0003\u00e2q\u0000\u0468\u046a\u0003\u00e4r\u0000\u0469\u0467"+
54228 		"\u0001\u0000\u0000\u0000\u0469\u0468\u0001\u0000\u0000\u0000\u046a\u0017"+
54229 		"\u0001\u0000\u0000\u0000\u046b\u046c\u0005)\u0000\u0000\u046c\u0019\u0001"+
54230 		"\u0000\u0000\u0000\u046d\u0475\u0003\u001c\u000e\u0000\u046e\u0475\u0003"+
54231 		"\u001e\u000f\u0000\u046f\u0475\u0003 \u0010\u0000\u0470\u0475\u0003\""+
54232 		"\u0011\u0000\u0471\u0475\u0003$\u0012\u0000\u0472\u0475\u0003&\u0013\u0000"+
54233 		"\u0473\u0475\u0003(\u0014\u0000\u0474\u046d\u0001\u0000\u0000\u0000\u0474"+
54234 		"\u046e\u0001\u0000\u0000\u0000\u0474\u046f\u0001\u0000\u0000\u0000\u0474"+
54235 		"\u0470\u0001\u0000\u0000\u0000\u0474\u0471\u0001\u0000\u0000\u0000\u0474"+
54236 		"\u0472\u0001\u0000\u0000\u0000\u0474\u0473\u0001\u0000\u0000\u0000\u0475"+
54237 		"\u001b\u0001\u0000\u0000\u0000\u0476\u0477\u0007\u0002\u0000\u0000\u0477"+
54238 		"\u001d\u0001\u0000\u0000\u0000\u0478\u047a\u0007\u0003\u0000\u0000\u0479"+
54239 		"\u0478\u0001\u0000\u0000\u0000\u0479\u047a\u0001\u0000\u0000\u0000\u047a"+
54240 		"\u047b\u0001\u0000\u0000\u0000\u047b\u047c\u0005\u02cb\u0000\u0000\u047c"+
54241 		"\u001f\u0001\u0000\u0000\u0000\u047d\u047e\u0007\u0004\u0000\u0000\u047e"+
54242 		"\u0485\u0005\u02ca\u0000\u0000\u047f\u0480\u0005!\u0000\u0000\u0480\u0481"+
54243 		"\u0003*\u0015\u0000\u0481\u0482\u0005\u02ca\u0000\u0000\u0482\u0483\u0005"+
54244 		"\"\u0000\u0000\u0483\u0485\u0001\u0000\u0000\u0000\u0484\u047d\u0001\u0000"+
54245 		"\u0000\u0000\u0484\u047f\u0001\u0000\u0000\u0000\u0485!\u0001\u0000\u0000"+
54246 		"\u0000\u0486\u0487\u0005\u02cf\u0000\u0000\u0487#\u0001\u0000\u0000\u0000"+
54247 		"\u0488\u0489\u0005\u02d0\u0000\u0000\u0489%\u0001\u0000\u0000\u0000\u048a"+
54248 		"\u048b\u0007\u0005\u0000\u0000\u048b\'\u0001\u0000\u0000\u0000\u048c\u048d"+
54249 		"\u0005l\u0000\u0000\u048d)\u0001\u0000\u0000\u0000\u048e\u0491\u0003,"+
54250 		"\u0016\u0000\u048f\u0491\u0003.\u0017\u0000\u0490\u048e\u0001\u0000\u0000"+
54251 		"\u0000\u0490\u048f\u0001\u0000\u0000\u0000\u0491+\u0001\u0000\u0000\u0000"+
54252 		"\u0492\u0495\u0005\u02c8\u0000\u0000\u0493\u0495\u00030\u0018\u0000\u0494"+
54253 		"\u0492\u0001\u0000\u0000\u0000\u0494\u0493\u0001\u0000\u0000\u0000\u0495"+
54254 		"-\u0001\u0000\u0000\u0000\u0496\u0497\u0005\u02c9\u0000\u0000\u0497/\u0001"+
54255 		"\u0000\u0000\u0000\u0498\u0499\u0007\u0006\u0000\u0000\u04991\u0001\u0000"+
54256 		"\u0000\u0000\u049a\u049b\u0003*\u0015\u0000\u049b3\u0001\u0000\u0000\u0000"+
54257 		"\u049c\u049d\u0003*\u0015\u0000\u049d5\u0001\u0000\u0000\u0000\u049e\u049f"+
54258 		"\u0003L&\u0000\u049f\u04a0\u0005\u0014\u0000\u0000\u04a0\u04a2\u0001\u0000"+
54259 		"\u0000\u0000\u04a1\u049e\u0001\u0000\u0000\u0000\u04a1\u04a2\u0001\u0000"+
54260 		"\u0000\u0000\u04a2\u04a3\u0001\u0000\u0000\u0000\u04a3\u04a4\u0003N\'"+
54261 		"\u0000\u04a47\u0001\u0000\u0000\u0000\u04a5\u04a6\u0003L&\u0000\u04a6"+
54262 		"\u04a7\u0005\u0014\u0000\u0000\u04a7\u04a9\u0001\u0000\u0000\u0000\u04a8"+
54263 		"\u04a5\u0001\u0000\u0000\u0000\u04a8\u04a9\u0001\u0000\u0000\u0000\u04a9"+
54264 		"\u04aa\u0001\u0000\u0000\u0000\u04aa\u04ad\u0003N\'\u0000\u04ab\u04ac"+
54265 		"\u0005+\u0000\u0000\u04ac\u04ae\u0003\u001e\u000f\u0000\u04ad\u04ab\u0001"+
54266 		"\u0000\u0000\u0000\u04ad\u04ae\u0001\u0000\u0000\u0000\u04ae9\u0001\u0000"+
54267 		"\u0000\u0000\u04af\u04b0\u0003L&\u0000\u04b0\u04b1\u0005\u0014\u0000\u0000"+
54268 		"\u04b1\u04b3\u0001\u0000\u0000\u0000\u04b2\u04af\u0001\u0000\u0000\u0000"+
54269 		"\u04b2\u04b3\u0001\u0000\u0000\u0000\u04b3\u04b4\u0001\u0000\u0000\u0000"+
54270 		"\u04b4\u04b5\u0003N\'\u0000\u04b5;\u0001\u0000\u0000\u0000\u04b6\u04b7"+
54271 		"\u00034\u001a\u0000\u04b7\u04b8\u0005\u0014\u0000\u0000\u04b8\u04ba\u0001"+
54272 		"\u0000\u0000\u0000\u04b9\u04b6\u0001\u0000\u0000\u0000\u04b9\u04ba\u0001"+
54273 		"\u0000\u0000\u0000\u04ba\u04bb\u0001\u0000\u0000\u0000\u04bb\u04bc\u0003"+
54274 		"N\'\u0000\u04bc=\u0001\u0000\u0000\u0000\u04bd\u04be\u00034\u001a\u0000"+
54275 		"\u04be\u04bf\u0005\u0014\u0000\u0000\u04bf\u04c1\u0001\u0000\u0000\u0000"+
54276 		"\u04c0\u04bd\u0001\u0000\u0000\u0000\u04c0\u04c1\u0001\u0000\u0000\u0000"+
54277 		"\u04c1\u04c2\u0001\u0000\u0000\u0000\u04c2\u04c3\u0003N\'\u0000\u04c3"+
54278 		"?\u0001\u0000\u0000\u0000\u04c4\u04c5\u00032\u0019\u0000\u04c5\u04c9\u0005"+
54279 		"\u0014\u0000\u0000\u04c6\u04c7\u0003L&\u0000\u04c7\u04c8\u0005\u0014\u0000"+
54280 		"\u0000\u04c8\u04ca\u0001\u0000\u0000\u0000\u04c9\u04c6\u0001\u0000\u0000"+
54281 		"\u0000\u04c9\u04ca\u0001\u0000\u0000\u0000\u04ca\u04d1\u0001\u0000\u0000"+
54282 		"\u0000\u04cb\u04cc\u0003L&\u0000\u04cc\u04cd\u0005\u0014\u0000\u0000\u04cd"+
54283 		"\u04cf\u0001\u0000\u0000\u0000\u04ce\u04cb\u0001\u0000\u0000\u0000\u04ce"+
54284 		"\u04cf\u0001\u0000\u0000\u0000\u04cf\u04d1\u0001\u0000\u0000\u0000\u04d0"+
54285 		"\u04c4\u0001\u0000\u0000\u0000\u04d0\u04ce\u0001\u0000\u0000\u0000\u04d1"+
54286 		"\u04d2\u0001\u0000\u0000\u0000\u04d2\u04d3\u0003N\'\u0000\u04d3A\u0001"+
54287 		"\u0000\u0000\u0000\u04d4\u04d5\u00034\u001a\u0000\u04d5\u04d6\u0005\u0014"+
54288 		"\u0000\u0000\u04d6\u04d8\u0001\u0000\u0000\u0000\u04d7\u04d4\u0001\u0000"+
54289 		"\u0000\u0000\u04d7\u04d8\u0001\u0000\u0000\u0000\u04d8\u04d9\u0001\u0000"+
54290 		"\u0000\u0000\u04d9\u04da\u0003N\'\u0000\u04daC\u0001\u0000\u0000\u0000"+
54291 		"\u04db\u04dc\u0003N\'\u0000\u04dcE\u0001\u0000\u0000\u0000\u04dd\u04de"+
54292 		"\u0003N\'\u0000\u04deG\u0001\u0000\u0000\u0000\u04df\u04e0\u0003L&\u0000"+
54293 		"\u04e0\u04e1\u0005\u0014\u0000\u0000\u04e1\u04e3\u0001\u0000\u0000\u0000"+
54294 		"\u04e2\u04df\u0001\u0000\u0000\u0000\u04e2\u04e3\u0001\u0000\u0000\u0000"+
54295 		"\u04e3\u04e6\u0001\u0000\u0000\u0000\u04e4\u04e7\u0003N\'\u0000\u04e5"+
54296 		"\u04e7\u0003J%\u0000\u04e6\u04e4\u0001\u0000\u0000\u0000\u04e6\u04e5\u0001"+
54297 		"\u0000\u0000\u0000\u04e7I\u0001\u0000\u0000\u0000\u04e8\u04e9\u0005,\u0000"+
54298 		"\u0000\u04e9\u04ea\u0005\u001f\u0000\u0000\u04ea\u04eb\u0003N\'\u0000"+
54299 		"\u04eb\u04ec\u0005 \u0000\u0000\u04ecK\u0001\u0000\u0000\u0000\u04ed\u04ee"+
54300 		"\u0003*\u0015\u0000\u04eeM\u0001\u0000\u0000\u0000\u04ef\u04f0\u0003*"+
54301 		"\u0015\u0000\u04f0O\u0001\u0000\u0000\u0000\u04f1\u04f2\u0005\u001f\u0000"+
54302 		"\u0000\u04f2\u04f7\u0003H$\u0000\u04f3\u04f4\u0005%\u0000\u0000\u04f4"+
54303 		"\u04f6\u0003H$\u0000\u04f5\u04f3\u0001\u0000\u0000\u0000\u04f6\u04f9\u0001"+
54304 		"\u0000\u0000\u0000\u04f7\u04f5\u0001\u0000\u0000\u0000\u04f7\u04f8\u0001"+
54305 		"\u0000\u0000\u0000\u04f8\u04fa\u0001\u0000\u0000\u0000\u04f9\u04f7\u0001"+
54306 		"\u0000\u0000\u0000\u04fa\u04fb\u0005 \u0000\u0000\u04fbQ\u0001\u0000\u0000"+
54307 		"\u0000\u04fc\u04fd\u0005\u001f\u0000\u0000\u04fd\u0502\u0003\u00ba]\u0000"+
54308 		"\u04fe\u04ff\u0005%\u0000\u0000\u04ff\u0501\u0003\u00ba]\u0000\u0500\u04fe"+
54309 		"\u0001\u0000\u0000\u0000\u0501\u0504\u0001\u0000\u0000\u0000\u0502\u0500"+
54310 		"\u0001\u0000\u0000\u0000\u0502\u0503\u0001\u0000\u0000\u0000\u0503\u0505"+
54311 		"\u0001\u0000\u0000\u0000\u0504\u0502\u0001\u0000\u0000\u0000\u0505\u0506"+
54312 		"\u0005 \u0000\u0000\u0506S\u0001\u0000\u0000\u0000\u0507\u0509\u0005\u001f"+
54313 		"\u0000\u0000\u0508\u0507\u0001\u0000\u0000\u0000\u0508\u0509\u0001\u0000"+
54314 		"\u0000\u0000\u0509\u050a\u0001\u0000\u0000\u0000\u050a\u050f\u0003@ \u0000"+
54315 		"\u050b\u050c\u0005%\u0000\u0000\u050c\u050e\u0003@ \u0000\u050d\u050b"+
54316 		"\u0001\u0000\u0000\u0000\u050e\u0511\u0001\u0000\u0000\u0000\u050f\u050d"+
54317 		"\u0001\u0000\u0000\u0000\u050f\u0510\u0001\u0000\u0000\u0000\u0510\u0513"+
54318 		"\u0001\u0000\u0000\u0000\u0511\u050f\u0001\u0000\u0000\u0000\u0512\u0514"+
54319 		"\u0005 \u0000\u0000\u0513\u0512\u0001\u0000\u0000\u0000\u0513\u0514\u0001"+
54320 		"\u0000\u0000\u0000\u0514U\u0001\u0000\u0000";
54321 	private static final String _serializedATNSegment1 =
54322 		"\u0000\u0515\u0516\u0003*\u0015\u0000\u0516W\u0001\u0000\u0000\u0000\u0517"+
54323 		"\u0518\u0003*\u0015\u0000\u0518Y\u0001\u0000\u0000\u0000\u0519\u051a\u0007"+
54324 		"\u0007\u0000\u0000\u051a[\u0001\u0000\u0000\u0000\u051b\u051e\u0003*\u0015"+
54325 		"\u0000\u051c\u051e\u0005\u02ca\u0000\u0000\u051d\u051b\u0001\u0000\u0000"+
54326 		"\u0000\u051d\u051c\u0001\u0000\u0000\u0000\u051e]\u0001\u0000\u0000\u0000"+
54327 		"\u051f\u0525\u0005\u001f\u0000\u0000\u0520\u0523\u0005\u02cb\u0000\u0000"+
54328 		"\u0521\u0522\u0005%\u0000\u0000\u0522\u0524\u0005\u02cb\u0000\u0000\u0523"+
54329 		"\u0521\u0001\u0000\u0000\u0000\u0523\u0524\u0001\u0000\u0000\u0000\u0524"+
54330 		"\u0526\u0001\u0000\u0000\u0000\u0525\u0520\u0001\u0000\u0000\u0000\u0525"+
54331 		"\u0526\u0001\u0000\u0000\u0000\u0526\u0527\u0001\u0000\u0000\u0000\u0527"+
54332 		"\u0528\u0005 \u0000\u0000\u0528_\u0001\u0000\u0000\u0000\u0529\u052b\u0005"+
54333 		"@\u0000\u0000\u052a\u0529\u0001\u0000\u0000\u0000\u052a\u052b\u0001\u0000"+
54334 		"\u0000\u0000\u052b\u052c\u0001\u0000\u0000\u0000\u052c\u052d\u0005C\u0000"+
54335 		"\u0000\u052da\u0001\u0000\u0000\u0000\u052e\u052f\u00061\uffff\uffff\u0000"+
54336 		"\u052f\u0538\u0003l6\u0000\u0530\u0531\u0003j5\u0000\u0531\u0532\u0003"+
54337 		"b1\u0002\u0532\u0538\u0001\u0000\u0000\u0000\u0533\u0534\u0005\u001f\u0000"+
54338 		"\u0000\u0534\u0535\u0003b1\u0000\u0535\u0536\u0005 \u0000\u0000\u0536"+
54339 		"\u0538\u0001\u0000\u0000\u0000\u0537\u052e\u0001\u0000\u0000\u0000\u0537"+
54340 		"\u0530\u0001\u0000\u0000\u0000\u0537\u0533\u0001\u0000\u0000\u0000\u0538"+
54341 		"\u0547\u0001\u0000\u0000\u0000\u0539\u053a\n\u0005\u0000\u0000\u053a\u053b"+
54342 		"\u0003d2\u0000\u053b\u053c\u0003b1\u0006\u053c\u0546\u0001\u0000\u0000"+
54343 		"\u0000\u053d\u053e\n\u0004\u0000\u0000\u053e\u053f\u0003f3\u0000\u053f"+
54344 		"\u0540\u0003b1\u0005\u0540\u0546\u0001\u0000\u0000\u0000\u0541\u0542\n"+
54345 		"\u0003\u0000\u0000\u0542\u0543\u0003h4\u0000\u0543\u0544\u0003b1\u0004"+
54346 		"\u0544\u0546\u0001\u0000\u0000\u0000\u0545\u0539\u0001\u0000\u0000\u0000"+
54347 		"\u0545\u053d\u0001\u0000\u0000\u0000\u0545\u0541\u0001\u0000\u0000\u0000"+
54348 		"\u0546\u0549\u0001\u0000\u0000\u0000\u0547\u0545\u0001\u0000\u0000\u0000"+
54349 		"\u0547\u0548\u0001\u0000\u0000\u0000\u0548c\u0001\u0000\u0000\u0000\u0549"+
54350 		"\u0547\u0001\u0000\u0000\u0000\u054a\u054b\u0007\b\u0000\u0000\u054be"+
54351 		"\u0001\u0000\u0000\u0000\u054c\u054d\u0007\t\u0000\u0000\u054dg\u0001"+
54352 		"\u0000\u0000\u0000\u054e\u0550\u0005j\u0000\u0000\u054f\u0551\u0005k\u0000"+
54353 		"\u0000\u0550\u054f\u0001\u0000\u0000\u0000\u0550\u0551\u0001\u0000\u0000"+
54354 		"\u0000\u0551\u0552\u0001\u0000\u0000\u0000\u0552\u0553\u0005O\u0000\u0000"+
54355 		"\u0553\u0554\u0005U\u0000\u0000\u0554i\u0001\u0000\u0000\u0000\u0555\u0556"+
54356 		"\u0007\n\u0000\u0000\u0556k\u0001\u0000\u0000\u0000\u0557\u0558\u0006"+
54357 		"6\uffff\uffff\u0000\u0558\u0559\u0003p8\u0000\u0559\u056e\u0001\u0000"+
54358 		"\u0000\u0000\u055a\u055b\n\u0005\u0000\u0000\u055b\u055d\u0005j\u0000"+
54359 		"\u0000\u055c\u055e\u0005k\u0000\u0000\u055d\u055c\u0001\u0000\u0000\u0000"+
54360 		"\u055d\u055e\u0001\u0000\u0000\u0000\u055e\u055f\u0001\u0000\u0000\u0000"+
54361 		"\u055f\u056d\u0007\u000b\u0000\u0000\u0560\u0561\n\u0004\u0000\u0000\u0561"+
54362 		"\u0562\u0005\u0016\u0000\u0000\u0562\u056d\u0003p8\u0000\u0563\u0564\n"+
54363 		"\u0003\u0000\u0000\u0564\u0565\u0003n7\u0000\u0565\u0566\u0003p8\u0000"+
54364 		"\u0566\u056d\u0001\u0000\u0000\u0000\u0567\u0568\n\u0002\u0000\u0000\u0568"+
54365 		"\u0569\u0003n7\u0000\u0569\u056a\u0007\f\u0000\u0000\u056a\u056b\u0003"+
54366 		"\u02f0\u0178\u0000\u056b\u056d\u0001\u0000\u0000\u0000\u056c\u055a\u0001"+
54367 		"\u0000\u0000\u0000\u056c\u0560\u0001\u0000\u0000\u0000\u056c\u0563\u0001"+
54368 		"\u0000\u0000\u0000\u056c\u0567\u0001\u0000\u0000\u0000\u056d\u0570\u0001"+
54369 		"\u0000\u0000\u0000\u056e\u056c\u0001\u0000\u0000\u0000\u056e\u056f\u0001"+
54370 		"\u0000\u0000\u0000\u056fm\u0001\u0000\u0000\u0000\u0570\u056e\u0001\u0000"+
54371 		"\u0000\u0000\u0571\u0572\u0007\r\u0000\u0000\u0572o\u0001\u0000\u0000"+
54372 		"\u0000\u0573\u0575\u0003r9\u0000\u0574\u0576\u0005k\u0000\u0000\u0575"+
54373 		"\u0574\u0001\u0000\u0000\u0000\u0575\u0576\u0001\u0000\u0000\u0000\u0576"+
54374 		"\u0577\u0001\u0000\u0000\u0000\u0577\u0578\u0005q\u0000\u0000\u0578\u0579"+
54375 		"\u0003\u02f0\u0178\u0000\u0579\u059f\u0001\u0000\u0000\u0000\u057a\u057c"+
54376 		"\u0003r9\u0000\u057b\u057d\u0005k\u0000\u0000\u057c\u057b\u0001\u0000"+
54377 		"\u0000\u0000\u057c\u057d\u0001\u0000\u0000\u0000\u057d\u057e\u0001\u0000"+
54378 		"\u0000\u0000\u057e\u057f\u0005q\u0000\u0000\u057f\u0580\u0005\u001f\u0000"+
54379 		"\u0000\u0580\u0585\u0003b1\u0000\u0581\u0582\u0005%\u0000\u0000\u0582"+
54380 		"\u0584\u0003b1\u0000\u0583\u0581\u0001\u0000\u0000\u0000\u0584\u0587\u0001"+
54381 		"\u0000\u0000\u0000\u0585\u0583\u0001\u0000\u0000\u0000\u0585\u0586\u0001"+
54382 		"\u0000\u0000\u0000\u0586\u0588\u0001\u0000\u0000\u0000\u0587\u0585\u0001"+
54383 		"\u0000\u0000\u0000\u0588\u0589\u0005 \u0000\u0000\u0589\u059f\u0001\u0000"+
54384 		"\u0000\u0000\u058a\u058c\u0003r9\u0000\u058b\u058d\u0005k\u0000\u0000"+
54385 		"\u058c\u058b\u0001\u0000\u0000\u0000\u058c\u058d\u0001\u0000\u0000\u0000"+
54386 		"\u058d\u058e\u0001\u0000\u0000\u0000\u058e\u058f\u0005p\u0000\u0000\u058f"+
54387 		"\u0590\u0003r9\u0000\u0590\u0591\u0005h\u0000\u0000\u0591\u0592\u0003"+
54388 		"p8\u0000\u0592\u059f\u0001\u0000\u0000\u0000\u0593\u0595\u0003r9\u0000"+
54389 		"\u0594\u0596\u0005k\u0000\u0000\u0595\u0594\u0001\u0000\u0000\u0000\u0595"+
54390 		"\u0596\u0001\u0000\u0000\u0000\u0596\u0597\u0001\u0000\u0000\u0000\u0597"+
54391 		"\u0598\u0005t\u0000\u0000\u0598\u059b\u0003t:\u0000\u0599\u059a\u0005"+
54392 		"\u00eb\u0000\u0000\u059a\u059c\u0003t:\u0000\u059b\u0599\u0001\u0000\u0000"+
54393 		"\u0000\u059b\u059c\u0001\u0000\u0000\u0000\u059c\u059f\u0001\u0000\u0000"+
54394 		"\u0000\u059d\u059f\u0003r9\u0000\u059e\u0573\u0001\u0000\u0000\u0000\u059e"+
54395 		"\u057a\u0001\u0000\u0000\u0000\u059e\u058a\u0001\u0000\u0000\u0000\u059e"+
54396 		"\u0593\u0001\u0000\u0000\u0000\u059e\u059d\u0001\u0000\u0000\u0000\u059f"+
54397 		"q\u0001\u0000\u0000\u0000\u05a0\u05a1\u00069\uffff\uffff\u0000\u05a1\u05a2"+
54398 		"\u0003t:\u0000\u05a2\u05c3\u0001\u0000\u0000\u0000\u05a3\u05a4\n\u000b"+
54399 		"\u0000\u0000\u05a4\u05a5\u0005\b\u0000\u0000\u05a5\u05c2\u0003r9\f\u05a6"+
54400 		"\u05a7\n\n\u0000\u0000\u05a7\u05a8\u0005\t\u0000\u0000\u05a8\u05c2\u0003"+
54401 		"r9\u000b\u05a9\u05aa\n\t\u0000\u0000\u05aa\u05ab\u0005\n\u0000\u0000\u05ab"+
54402 		"\u05c2\u0003r9\n\u05ac\u05ad\n\b\u0000\u0000\u05ad\u05ae\u0005\u000b\u0000"+
54403 		"\u0000\u05ae\u05c2\u0003r9\t\u05af\u05b0\n\u0007\u0000\u0000\u05b0\u05b1"+
54404 		"\u0005\u000f\u0000\u0000\u05b1\u05c2\u0003r9\b\u05b2\u05b3\n\u0006\u0000"+
54405 		"\u0000\u05b3\u05b4\u0005\u0010\u0000\u0000\u05b4\u05c2\u0003r9\u0007\u05b5"+
54406 		"\u05b6\n\u0005\u0000\u0000\u05b6\u05b7\u0005\u0011\u0000\u0000\u05b7\u05c2"+
54407 		"\u0003r9\u0006\u05b8\u05b9\n\u0004\u0000\u0000\u05b9\u05ba\u0005\u0012"+
54408 		"\u0000\u0000\u05ba\u05c2\u0003r9\u0005\u05bb\u05bc\n\u0003\u0000\u0000"+
54409 		"\u05bc\u05bd\u0005\r\u0000\u0000\u05bd\u05c2\u0003r9\u0004\u05be\u05bf"+
54410 		"\n\u0002\u0000\u0000\u05bf\u05c0\u0005\f\u0000\u0000\u05c0\u05c2\u0003"+
54411 		"r9\u0003\u05c1\u05a3\u0001\u0000\u0000\u0000\u05c1\u05a6\u0001\u0000\u0000"+
54412 		"\u0000\u05c1\u05a9\u0001\u0000\u0000\u0000\u05c1\u05ac\u0001\u0000\u0000"+
54413 		"\u0000\u05c1\u05af\u0001\u0000\u0000\u0000\u05c1\u05b2\u0001\u0000\u0000"+
54414 		"\u0000\u05c1\u05b5\u0001\u0000\u0000\u0000\u05c1\u05b8\u0001\u0000\u0000"+
54415 		"\u0000\u05c1\u05bb\u0001\u0000\u0000\u0000\u05c1\u05be\u0001\u0000\u0000"+
54416 		"\u0000\u05c2\u05c5\u0001\u0000\u0000\u0000\u05c3\u05c1\u0001\u0000\u0000"+
54417 		"\u0000\u05c3\u05c4\u0001\u0000\u0000\u0000\u05c4s\u0001\u0000\u0000\u0000"+
54418 		"\u05c5\u05c3\u0001\u0000\u0000\u0000\u05c6\u05c7\u0006:\uffff\uffff\u0000"+
54419 		"\u05c7\u05e8\u0003v;\u0000\u05c8\u05e8\u0003\u0018\f\u0000\u05c9\u05e8"+
54420 		"\u0003\u001a\r\u0000\u05ca\u05e8\u0003H$\u0000\u05cb\u05e8\u0003\u00da"+
54421 		"m\u0000\u05cc\u05cd\u0007\u000e\u0000\u0000\u05cd\u05e8\u0003t:\u0006"+
54422 		"\u05ce\u05d0\u0005\u00f1\u0000\u0000\u05cf\u05ce\u0001\u0000\u0000\u0000"+
54423 		"\u05cf\u05d0\u0001\u0000\u0000\u0000\u05d0\u05d1\u0001\u0000\u0000\u0000"+
54424 		"\u05d1\u05d2\u0005\u001f\u0000\u0000\u05d2\u05d7\u0003b1\u0000\u05d3\u05d4"+
54425 		"\u0005%\u0000\u0000\u05d4\u05d6\u0003b1\u0000\u05d5\u05d3\u0001\u0000"+
54426 		"\u0000\u0000\u05d6\u05d9\u0001\u0000\u0000\u0000\u05d7\u05d5\u0001\u0000"+
54427 		"\u0000\u0000\u05d7\u05d8\u0001\u0000\u0000\u0000\u05d8\u05da\u0001\u0000"+
54428 		"\u0000\u0000\u05d9\u05d7\u0001\u0000\u0000\u0000\u05da\u05db\u0005 \u0000"+
54429 		"\u0000\u05db\u05e8\u0001\u0000\u0000\u0000\u05dc\u05de\u0005o\u0000\u0000"+
54430 		"\u05dd\u05dc\u0001\u0000\u0000\u0000\u05dd\u05de\u0001\u0000\u0000\u0000"+
54431 		"\u05de\u05df\u0001\u0000\u0000\u0000\u05df\u05e8\u0003\u02f0\u0178\u0000"+
54432 		"\u05e0\u05e1\u0005!\u0000\u0000\u05e1\u05e2\u0003*\u0015\u0000\u05e2\u05e3"+
54433 		"\u0003b1\u0000\u05e3\u05e4\u0005\"\u0000\u0000\u05e4\u05e8\u0001\u0000"+
54434 		"\u0000\u0000\u05e5\u05e8\u0003\u0092I\u0000\u05e6\u05e8\u0003\u0098L\u0000"+
54435 		"\u05e7\u05c6\u0001\u0000\u0000\u0000\u05e7\u05c8\u0001\u0000\u0000\u0000"+
54436 		"\u05e7\u05c9\u0001\u0000\u0000\u0000\u05e7\u05ca\u0001\u0000\u0000\u0000"+
54437 		"\u05e7\u05cb\u0001\u0000\u0000\u0000\u05e7\u05cc\u0001\u0000\u0000\u0000"+
54438 		"\u05e7\u05cf\u0001\u0000\u0000\u0000\u05e7\u05dd\u0001\u0000\u0000\u0000"+
54439 		"\u05e7\u05e0\u0001\u0000\u0000\u0000\u05e7\u05e5\u0001\u0000\u0000\u0000"+
54440 		"\u05e7\u05e6\u0001\u0000\u0000\u0000\u05e8\u05ee\u0001\u0000\u0000\u0000"+
54441 		"\u05e9\u05ea\n\u0007\u0000\u0000\u05ea\u05eb\u0005\u0005\u0000\u0000\u05eb"+
54442 		"\u05ed\u0003t:\b\u05ec\u05e9\u0001\u0000\u0000\u0000\u05ed\u05f0\u0001"+
54443 		"\u0000\u0000\u0000\u05ee\u05ec\u0001\u0000\u0000\u0000\u05ee\u05ef\u0001"+
54444 		"\u0000\u0000\u0000\u05efu\u0001\u0000\u0000\u0000\u05f0\u05ee\u0001\u0000"+
54445 		"\u0000\u0000\u05f1\u05f5\u0003x<\u0000\u05f2\u05f5\u0003~?\u0000\u05f3"+
54446 		"\u05f5\u0003\u008eG\u0000\u05f4\u05f1\u0001\u0000\u0000\u0000\u05f4\u05f2"+
54447 		"\u0001\u0000\u0000\u0000\u05f4\u05f3\u0001\u0000\u0000\u0000\u05f5w\u0001"+
54448 		"\u0000\u0000\u0000\u05f6\u05f7\u0003z=\u0000\u05f7\u05f9\u0005\u001f\u0000"+
54449 		"\u0000\u05f8\u05fa\u0003|>\u0000\u05f9\u05f8\u0001\u0000\u0000\u0000\u05f9"+
54450 		"\u05fa\u0001\u0000\u0000\u0000\u05fa\u0604\u0001\u0000\u0000\u0000\u05fb"+
54451 		"\u0600\u0003b1\u0000\u05fc\u05fd\u0005%\u0000\u0000\u05fd\u05ff\u0003"+
54452 		"b1\u0000\u05fe\u05fc\u0001\u0000\u0000\u0000\u05ff\u0602\u0001\u0000\u0000"+
54453 		"\u0000\u0600\u05fe\u0001\u0000\u0000\u0000\u0600\u0601\u0001\u0000\u0000"+
54454 		"\u0000\u0601\u0605\u0001\u0000\u0000\u0000\u0602\u0600\u0001\u0000\u0000"+
54455 		"\u0000\u0603\u0605\u0005\u0011\u0000\u0000\u0604\u05fb\u0001\u0000\u0000"+
54456 		"\u0000\u0604\u0603\u0001\u0000\u0000\u0000\u0604\u0605\u0001\u0000\u0000"+
54457 		"\u0000\u0605\u0606\u0001\u0000\u0000\u0000\u0606\u0607\u0005 \u0000\u0000"+
54458 		"\u0607y\u0001\u0000\u0000\u0000\u0608\u0609\u0007\u000f\u0000\u0000\u0609"+
54459 		"{\u0001\u0000\u0000\u0000\u060a\u060b\u0005O\u0000\u0000\u060b}\u0001"+
54460 		"\u0000\u0000\u0000\u060c\u0612\u0003\u0080@\u0000\u060d\u0612\u0003\u0084"+
54461 		"B\u0000\u060e\u0612\u0003\u0082A\u0000\u060f\u0612\u0003\u0086C\u0000"+
54462 		"\u0610\u0612\u0003\u008cF\u0000\u0611\u060c\u0001\u0000\u0000\u0000\u0611"+
54463 		"\u060d\u0001\u0000\u0000\u0000\u0611\u060e\u0001\u0000\u0000\u0000\u0611"+
54464 		"\u060f\u0001\u0000\u0000\u0000\u0611\u0610\u0001\u0000\u0000\u0000\u0612"+
54465 		"\u007f\u0001\u0000\u0000\u0000\u0613\u0614\u0005R\u0000\u0000\u0614\u0615"+
54466 		"\u0005\u001f\u0000\u0000\u0615\u0616\u0003b1\u0000\u0616\u0617\u0005`"+
54467 		"\u0000\u0000\u0617\u0618\u0003\u009eO\u0000\u0618\u0619\u0005 \u0000\u0000"+
54468 		"\u0619\u0081\u0001\u0000\u0000\u0000\u061a\u061b\u0005\u010a\u0000\u0000"+
54469 		"\u061b\u061c\u0005\u001f\u0000\u0000\u061c\u061d\u0003\u009eO\u0000\u061d"+
54470 		"\u061e\u0005%\u0000\u0000\u061e\u0621\u0003b1\u0000\u061f\u0620\u0005"+
54471 		"%\u0000\u0000\u0620\u0622\u0005\u02cb\u0000\u0000\u0621\u061f\u0001\u0000"+
54472 		"\u0000\u0000\u0621\u0622\u0001\u0000\u0000\u0000\u0622\u0623\u0001\u0000"+
54473 		"\u0000\u0000\u0623\u0624\u0005 \u0000\u0000\u0624\u0083\u0001\u0000\u0000"+
54474 		"\u0000\u0625\u0626\u0005\u0083\u0000\u0000\u0626\u0627\u0005\u001f\u0000"+
54475 		"\u0000\u0627\u062c\u0003b1\u0000\u0628\u0629\u0005%\u0000\u0000\u0629"+
54476 		"\u062b\u0003b1\u0000\u062a\u0628\u0001\u0000\u0000\u0000\u062b\u062e\u0001"+
54477 		"\u0000\u0000\u0000\u062c\u062a\u0001\u0000\u0000\u0000\u062c\u062d\u0001"+
54478 		"\u0000\u0000\u0000\u062d\u0631\u0001\u0000\u0000\u0000\u062e\u062c\u0001"+
54479 		"\u0000\u0000\u0000\u062f\u0630\u0005^\u0000\u0000\u0630\u0632\u0003\u00d4"+
54480 		"j\u0000\u0631\u062f\u0001\u0000\u0000\u0000\u0631\u0632\u0001\u0000\u0000"+
54481 		"\u0000\u0632\u0633\u0001\u0000\u0000\u0000\u0633\u0634\u0005 \u0000\u0000"+
54482 		"\u0634\u0085\u0001\u0000\u0000\u0000\u0635\u0636\u0005\u02c6\u0000\u0000"+
54483 		"\u0636\u0637\u0005\u001f\u0000\u0000\u0637\u063a\u0003b1\u0000\u0638\u0639"+
54484 		"\u0005%\u0000\u0000\u0639\u063b\u0003b1\u0000\u063a\u0638\u0001\u0000"+
54485 		"\u0000\u0000\u063a\u063b\u0001\u0000\u0000\u0000\u063b\u063c\u0001\u0000"+
54486 		"\u0000\u0000\u063c\u063e\u0005 \u0000\u0000\u063d\u063f\u0003\u0088D\u0000"+
54487 		"\u063e\u063d\u0001\u0000\u0000\u0000\u063e\u063f\u0001\u0000\u0000\u0000"+
54488 		"\u063f\u0087\u0001\u0000\u0000\u0000\u0640\u0641\u0005M\u0000\u0000\u0641"+
54489 		"\u0642\u0005\u001f\u0000\u0000\u0642\u0647\u0003\u008aE\u0000\u0643\u0644"+
54490 		"\u0005%\u0000\u0000\u0644\u0646\u0003\u008aE\u0000\u0645\u0643\u0001\u0000"+
54491 		"\u0000\u0000\u0646\u0649\u0001\u0000\u0000\u0000\u0647\u0645\u0001\u0000"+
54492 		"\u0000\u0000\u0647\u0648\u0001\u0000\u0000\u0000\u0648\u064a\u0001\u0000"+
54493 		"\u0000\u0000\u0649\u0647\u0001\u0000\u0000\u0000\u064a\u064b\u0005 \u0000"+
54494 		"\u0000\u064b\u0089\u0001\u0000\u0000\u0000\u064c\u064d\u0003H$\u0000\u064d"+
54495 		"\u064f\u0003\u009eO\u0000\u064e\u0650\u0003b1\u0000\u064f\u064e\u0001"+
54496 		"\u0000\u0000\u0000\u064f\u0650\u0001\u0000\u0000\u0000\u0650\u0653\u0001"+
54497 		"\u0000\u0000\u0000\u0651\u0652\u0005`\u0000\u0000\u0652\u0654\u0005\u02bb"+
54498 		"\u0000\u0000\u0653\u0651\u0001\u0000\u0000\u0000\u0653\u0654\u0001\u0000"+
54499 		"\u0000\u0000\u0654\u008b\u0001\u0000\u0000\u0000\u0655\u0656\u0005\u02c7"+
54500 		"\u0000\u0000\u0656\u0657\u0005\u001f\u0000\u0000\u0657\u0658\u0003b1\u0000"+
54501 		"\u0658\u0660\u0005%\u0000\u0000\u0659\u065a\u0003b1\u0000\u065a\u065b"+
54502 		"\u0005+\u0000\u0000\u065b\u065c\u0003b1\u0000\u065c\u065d\u0005+\u0000"+
54503 		"\u0000\u065d\u065e\u0003b1\u0000\u065e\u0661\u0001\u0000\u0000\u0000\u065f"+
54504 		"\u0661\u0003b1\u0000\u0660\u0659\u0001\u0000\u0000\u0000\u0660\u065f\u0001"+
54505 		"\u0000\u0000\u0000\u0661\u0662\u0001\u0000\u0000\u0000\u0662\u0665\u0005"+
54506 		"%\u0000\u0000\u0663\u0666\u0003@ \u0000\u0664\u0666\u0003b1\u0000\u0665"+
54507 		"\u0663\u0001\u0000\u0000\u0000\u0665\u0664\u0001\u0000\u0000\u0000\u0666"+
54508 		"\u0667\u0001\u0000\u0000\u0000\u0667\u0668\u0005 \u0000\u0000\u0668\u0677"+
54509 		"\u0001\u0000\u0000\u0000\u0669\u066a\u0005\u02c7\u0000\u0000\u066a\u066b"+
54510 		"\u0005\u001f\u0000\u0000\u066b\u066c\u0005\u0164\u0000\u0000\u066c\u0671"+
54511 		"\u0003b1\u0000\u066d\u066e\u0005%\u0000\u0000\u066e\u0670\u0003b1\u0000"+
54512 		"\u066f\u066d\u0001\u0000\u0000\u0000\u0670\u0673\u0001\u0000\u0000\u0000"+
54513 		"\u0671\u066f\u0001\u0000\u0000\u0000\u0671\u0672\u0001\u0000\u0000\u0000"+
54514 		"\u0672\u0674\u0001\u0000\u0000\u0000\u0673\u0671\u0001\u0000\u0000\u0000"+
54515 		"\u0674\u0675\u0005 \u0000\u0000\u0675\u0677\u0001\u0000\u0000\u0000\u0676"+
54516 		"\u0655\u0001\u0000\u0000\u0000\u0676\u0669\u0001\u0000\u0000\u0000\u0677"+
54517 		"\u008d\u0001\u0000\u0000\u0000\u0678\u0679\u0003\u0090H\u0000\u0679\u0683"+
54518 		"\u0005\u001f\u0000\u0000\u067a\u067f\u0003b1\u0000\u067b\u067c\u0005%"+
54519 		"\u0000\u0000\u067c\u067e\u0003b1\u0000\u067d\u067b\u0001\u0000\u0000\u0000"+
54520 		"\u067e\u0681\u0001\u0000\u0000\u0000\u067f\u067d\u0001\u0000\u0000\u0000"+
54521 		"\u067f\u0680\u0001\u0000\u0000\u0000\u0680\u0684\u0001\u0000\u0000\u0000"+
54522 		"\u0681\u067f\u0001\u0000\u0000\u0000\u0682\u0684\u0005\u0011\u0000\u0000"+
54523 		"\u0683\u067a\u0001\u0000\u0000\u0000\u0683\u0682\u0001\u0000\u0000\u0000"+
54524 		"\u0683\u0684\u0001\u0000\u0000\u0000\u0684\u0685\u0001\u0000\u0000\u0000"+
54525 		"\u0685\u0686\u0005 \u0000\u0000\u0686\u008f\u0001\u0000\u0000\u0000\u0687"+
54526 		"\u0688\u0003L&\u0000\u0688\u0689\u0005\u0014\u0000\u0000\u0689\u068b\u0001"+
54527 		"\u0000\u0000\u0000\u068a\u0687\u0001\u0000\u0000\u0000\u068a\u068b\u0001"+
54528 		"\u0000\u0000\u0000\u068b\u068c\u0001\u0000\u0000\u0000\u068c\u0692\u0003"+
54529 		"*\u0015\u0000\u068d\u0692\u0005c\u0000\u0000\u068e\u0692\u0005\u008a\u0000"+
54530 		"\u0000\u068f\u0692\u0005\u008b\u0000\u0000\u0690\u0692\u0005\u0086\u0000"+
54531 		"\u0000\u0691\u068a\u0001\u0000\u0000\u0000\u0691\u068d\u0001\u0000\u0000"+
54532 		"\u0000\u0691\u068e\u0001\u0000\u0000\u0000\u0691\u068f\u0001\u0000\u0000"+
54533 		"\u0000\u0691\u0690\u0001\u0000\u0000\u0000\u0692\u0091\u0001\u0000\u0000"+
54534 		"\u0000\u0693\u0695\u0005P\u0000\u0000\u0694\u0696\u0003t:\u0000\u0695"+
54535 		"\u0694\u0001\u0000\u0000\u0000\u0695\u0696\u0001\u0000\u0000\u0000\u0696"+
54536 		"\u0698\u0001\u0000\u0000\u0000\u0697\u0699\u0003\u0094J\u0000\u0698\u0697"+
54537 		"\u0001\u0000\u0000\u0000\u0699\u069a\u0001\u0000\u0000\u0000\u069a\u0698"+
54538 		"\u0001\u0000\u0000\u0000\u069a\u069b\u0001\u0000\u0000\u0000\u069b\u069d"+
54539 		"\u0001\u0000\u0000\u0000\u069c\u069e\u0003\u0096K\u0000\u069d\u069c\u0001"+
54540 		"\u0000\u0000\u0000\u069d\u069e\u0001\u0000\u0000\u0000\u069e\u069f\u0001"+
54541 		"\u0000\u0000\u0000\u069f\u06a0\u0005\u0116\u0000\u0000\u06a0\u0093\u0001"+
54542 		"\u0000\u0000\u0000\u06a1\u06a2\u0005Q\u0000\u0000\u06a2\u06a3\u0003b1"+
54543 		"\u0000\u06a3\u06a4\u0005e\u0000\u0000\u06a4\u06a5\u0003b1\u0000\u06a5"+
54544 		"\u0095\u0001\u0000\u0000\u0000\u06a6\u06a7\u0005d\u0000\u0000\u06a7\u06a8"+
54545 		"\u0003b1\u0000\u06a8\u0097\u0001\u0000\u0000\u0000\u06a9\u06ae\u0003\u00a8"+
54546 		"T\u0000\u06aa\u06ae\u0003\u00a2Q\u0000\u06ab\u06ae\u0003\u00a4R\u0000"+
54547 		"\u06ac\u06ae\u0003\u00a6S\u0000\u06ad\u06a9\u0001\u0000\u0000\u0000\u06ad"+
54548 		"\u06aa\u0001\u0000\u0000\u0000\u06ad\u06ab\u0001\u0000\u0000\u0000\u06ad"+
54549 		"\u06ac\u0001\u0000\u0000\u0000\u06ae\u0099\u0001\u0000\u0000\u0000\u06af"+
54550 		"\u06b0\u0005u\u0000\u0000\u06b0\u06b1\u0005w\u0000\u0000\u06b1\u06b6\u0003"+
54551 		"\u009cN\u0000\u06b2\u06b3\u0005%\u0000\u0000\u06b3\u06b5\u0003\u009cN"+
54552 		"\u0000\u06b4\u06b2\u0001\u0000\u0000\u0000\u06b5\u06b8\u0001\u0000\u0000"+
54553 		"\u0000\u06b6\u06b4\u0001\u0000\u0000\u0000\u06b6\u06b7\u0001\u0000\u0000"+
54554 		"\u0000\u06b7\u06c4\u0001\u0000\u0000\u0000\u06b8\u06b6\u0001\u0000\u0000"+
54555 		"\u0000\u06b9\u06ba\u0005|\u0000\u0000\u06ba\u06bb\u0003b1\u0000\u06bb"+
54556 		"\u06c2\u0007\u0010\u0000\u0000\u06bc\u06bd\u0005\u01b7\u0000\u0000\u06bd"+
54557 		"\u06be\u0007\u0011\u0000\u0000\u06be\u06bf\u0003b1\u0000\u06bf\u06c0\u0007"+
54558 		"\u0010\u0000\u0000\u06c0\u06c1\u0005\u01b9\u0000\u0000\u06c1\u06c3\u0001"+
54559 		"\u0000\u0000\u0000\u06c2\u06bc\u0001\u0000\u0000\u0000\u06c2\u06c3\u0001"+
54560 		"\u0000\u0000\u0000\u06c3\u06c5\u0001\u0000\u0000\u0000\u06c4\u06b9\u0001"+
54561 		"\u0000\u0000\u0000\u06c4\u06c5\u0001\u0000\u0000\u0000\u06c5\u009b\u0001"+
54562 		"\u0000\u0000\u0000\u06c6\u06ca\u0003H$\u0000\u06c7\u06ca\u0003\u001e\u000f"+
54563 		"\u0000\u06c8\u06ca\u0003b1\u0000\u06c9\u06c6\u0001\u0000\u0000\u0000\u06c9"+
54564 		"\u06c7\u0001\u0000\u0000\u0000\u06c9\u06c8\u0001\u0000\u0000\u0000\u06ca"+
54565 		"\u06cd\u0001\u0000\u0000\u0000\u06cb\u06cc\u0005\u0107\u0000\u0000\u06cc"+
54566 		"\u06ce\u0003*\u0015\u0000\u06cd\u06cb\u0001\u0000\u0000\u0000\u06cd\u06ce"+
54567 		"\u0001\u0000\u0000\u0000\u06ce\u06d0\u0001\u0000\u0000\u0000\u06cf\u06d1"+
54568 		"\u0007\u0012\u0000\u0000\u06d0\u06cf\u0001\u0000\u0000\u0000\u06d0\u06d1"+
54569 		"\u0001\u0000\u0000\u0000\u06d1\u009d\u0001\u0000\u0000\u0000\u06d2\u06d3"+
54570 		"\u0003\u00d4j\u0000\u06d3\u06d4\u0005\u0014\u0000\u0000\u06d4\u06d6\u0001"+
54571 		"\u0000\u0000\u0000\u06d5\u06d2\u0001\u0000\u0000\u0000\u06d5\u06d6\u0001"+
54572 		"\u0000\u0000\u0000\u06d6\u06d7\u0001\u0000\u0000\u0000\u06d7\u06e3\u0003"+
54573 		"\u00a0P\u0000\u06d8\u06e4\u0003^/\u0000\u06d9\u06da\u0005\u001f\u0000"+
54574 		"\u0000\u06da\u06db\u0005\u0095\u0000\u0000\u06db\u06e4\u0005 \u0000\u0000"+
54575 		"\u06dc\u06de\u0005\u001f\u0000\u0000\u06dd\u06df\u0007\u0013\u0000\u0000"+
54576 		"\u06de\u06dd\u0001\u0000\u0000\u0000\u06de\u06df\u0001\u0000\u0000\u0000"+
54577 		"\u06df\u06e0\u0001\u0000\u0000\u0000\u06e0\u06e1\u0003\u00d4j\u0000\u06e1"+
54578 		"\u06e2\u0005 \u0000\u0000\u06e2\u06e4\u0001\u0000\u0000\u0000\u06e3\u06d8"+
54579 		"\u0001\u0000\u0000\u0000\u06e3\u06d9\u0001\u0000\u0000\u0000\u06e3\u06dc"+
54580 		"\u0001\u0000\u0000\u0000\u06e3\u06e4\u0001\u0000\u0000\u0000\u06e4\u009f"+
54581 		"\u0001\u0000\u0000\u0000\u06e5\u06e6\u0007\u0014\u0000\u0000\u06e6\u00a1"+
54582 		"\u0001\u0000\u0000\u0000\u06e7\u06eb\u0005\u02c8\u0000\u0000\u06e8\u06e9"+
54583 		"\u0005M\u0000\u0000\u06e9\u06ea\u0005\u0088\u0000\u0000\u06ea\u06ec\u0005"+
54584 		"\u013d\u0000\u0000\u06eb\u06e8\u0001\u0000\u0000\u0000\u06eb\u06ec\u0001"+
54585 		"\u0000\u0000\u0000\u06ec\u06ed\u0001\u0000\u0000\u0000\u06ed\u06ee\u0005"+
54586 		"\u02ca\u0000\u0000\u06ee\u00a3\u0001\u0000\u0000\u0000\u06ef\u06f0\u0005"+
54587 		"R\u0000\u0000\u06f0\u06f1\u0005\u001f\u0000\u0000\u06f1\u06f2\u0003b1"+
54588 		"\u0000\u06f2\u06f3\u0005`\u0000\u0000\u06f3\u06f7\u0003\u009eO\u0000\u06f4"+
54589 		"\u06f5\u0005\u001f\u0000\u0000\u06f5\u06f6\u0005\u02cb\u0000\u0000\u06f6"+
54590 		"\u06f8\u0005 \u0000\u0000\u06f7\u06f4\u0001\u0000\u0000\u0000\u06f7\u06f8"+
54591 		"\u0001\u0000\u0000\u0000\u06f8\u06f9\u0001\u0000\u0000\u0000\u06f9\u06fa"+
54592 		"\u0005 \u0000\u0000\u06fa\u00a5\u0001\u0000\u0000\u0000\u06fb\u06fc\u0005"+
54593 		"\u010a\u0000\u0000\u06fc\u0700\u0003\u009eO\u0000\u06fd\u06fe\u0005\u001f"+
54594 		"\u0000\u0000\u06fe\u06ff\u0005\u02cb\u0000\u0000\u06ff\u0701\u0005 \u0000"+
54595 		"\u0000\u0700\u06fd\u0001\u0000\u0000\u0000\u0700\u0701\u0001\u0000\u0000"+
54596 		"\u0000\u0701\u0702\u0001\u0000\u0000\u0000\u0702\u0703\u0005%\u0000\u0000"+
54597 		"\u0703\u0706\u0003b1\u0000\u0704\u0705\u0005%\u0000\u0000\u0705\u0707"+
54598 		"\u0005\u02cb\u0000\u0000\u0706\u0704\u0001\u0000\u0000\u0000\u0706\u0707"+
54599 		"\u0001\u0000\u0000\u0000\u0707\u00a7\u0001\u0000\u0000\u0000\u0708\u0709"+
54600 		"\u0003v;\u0000\u0709\u070a\u0003\u00aaU\u0000\u070a\u00a9\u0001\u0000"+
54601 		"\u0000\u0000\u070b\u070c\u0005\u012a\u0000\u0000\u070c\u070e\u0005\u001f"+
54602 		"\u0000\u0000\u070d\u070f\u0003\u00acV\u0000\u070e\u070d\u0001\u0000\u0000"+
54603 		"\u0000\u070e\u070f\u0001\u0000\u0000\u0000\u070f\u0711\u0001\u0000\u0000"+
54604 		"\u0000\u0710\u0712\u0003\u009aM\u0000\u0711\u0710\u0001\u0000\u0000\u0000"+
54605 		"\u0711\u0712\u0001\u0000\u0000\u0000\u0712\u0714\u0001\u0000\u0000\u0000"+
54606 		"\u0713\u0715\u0003\u00aeW\u0000\u0714\u0713\u0001\u0000\u0000\u0000\u0714"+
54607 		"\u0715\u0001\u0000\u0000\u0000\u0715\u0716\u0001\u0000\u0000\u0000\u0716"+
54608 		"\u0717\u0005 \u0000\u0000\u0717\u00ab\u0001\u0000\u0000\u0000\u0718\u0719"+
54609 		"\u0005\u00ee\u0000\u0000\u0719\u071a\u0005w\u0000\u0000\u071a\u071f\u0003"+
54610 		"b1\u0000\u071b\u071c\u0005%\u0000\u0000\u071c\u071e\u0003b1\u0000\u071d"+
54611 		"\u071b\u0001\u0000\u0000\u0000\u071e\u0721\u0001\u0000\u0000\u0000\u071f"+
54612 		"\u071d\u0001\u0000\u0000\u0000\u071f\u0720\u0001\u0000\u0000\u0000\u0720"+
54613 		"\u00ad\u0001\u0000\u0000\u0000\u0721\u071f\u0001\u0000\u0000\u0000\u0722"+
54614 		"\u0723\u0007\u0015\u0000\u0000\u0723\u0724\u0003\u00b0X\u0000\u0724\u00af"+
54615 		"\u0001\u0000\u0000\u0000\u0725\u0728\u0003\u00b6[\u0000\u0726\u0728\u0003"+
54616 		"\u00b2Y\u0000\u0727\u0725\u0001\u0000\u0000\u0000\u0727\u0726\u0001\u0000"+
54617 		"\u0000\u0000\u0728\u00b1\u0001\u0000\u0000\u0000\u0729\u072a\u0005p\u0000"+
54618 		"\u0000\u072a\u072b\u0003\u00b4Z\u0000\u072b\u072c\u0005h\u0000\u0000\u072c"+
54619 		"\u072d\u0003\u00b4Z\u0000\u072d\u00b3\u0001\u0000\u0000\u0000\u072e\u0731"+
54620 		"\u0003\u00b6[\u0000\u072f\u0731\u0003\u00b8\\\u0000\u0730\u072e\u0001"+
54621 		"\u0000\u0000\u0000\u0730\u072f\u0001\u0000\u0000\u0000\u0731\u00b5\u0001"+
54622 		"\u0000\u0000\u0000\u0732\u0733\u0005\u0120\u0000\u0000\u0733\u0739\u0005"+
54623 		"\u012f\u0000\u0000\u0734\u0735\u0005\u02cb\u0000\u0000\u0735\u0739\u0005"+
54624 		"\u012f\u0000\u0000\u0736\u0737\u0005\u009b\u0000\u0000\u0737\u0739\u0005"+
54625 		"\u00f1\u0000\u0000\u0738\u0732\u0001\u0000\u0000\u0000\u0738\u0734\u0001"+
54626 		"\u0000\u0000\u0000\u0738\u0736\u0001\u0000\u0000\u0000\u0739\u00b7\u0001"+
54627 		"\u0000\u0000\u0000\u073a\u073b\u0005\u0120\u0000\u0000\u073b\u0741\u0005"+
54628 		"\u011a\u0000\u0000\u073c\u073d\u0005\u02cb\u0000\u0000\u073d\u0741\u0005"+
54629 		"\u011a\u0000\u0000\u073e\u073f\u0005\u009b\u0000\u0000\u073f\u0741\u0005"+
54630 		"\u00f1\u0000\u0000\u0740\u073a\u0001\u0000\u0000\u0000\u0740\u073c\u0001"+
54631 		"\u0000\u0000\u0000\u0740\u073e\u0001\u0000\u0000\u0000\u0741\u00b9\u0001"+
54632 		"\u0000\u0000\u0000\u0742\u0744\u0003H$\u0000\u0743\u0745\u0007\u0012\u0000"+
54633 		"\u0000\u0744\u0743\u0001\u0000\u0000\u0000\u0744\u0745\u0001\u0000\u0000"+
54634 		"\u0000\u0745\u00bb\u0001\u0000\u0000\u0000\u0746\u0747\u0005\u0119\u0000"+
54635 		"\u0000\u0747\u0748\u0005\u0018\u0000\u0000\u0748\u0754\u0005\u02cb\u0000"+
54636 		"\u0000\u0749\u0754\u0003\u00c2a\u0000\u074a\u074b\u0007\u0016\u0000\u0000"+
54637 		"\u074b\u0754\u0003\u00c0`\u0000\u074c\u074d\u0005\u0124\u0000\u0000\u074d"+
54638 		"\u074e\u0005\u0018\u0000\u0000\u074e\u0754\u0005\u02cb\u0000\u0000\u074f"+
54639 		"\u0751\u0003\u00be_\u0000\u0750\u0752\u0003\u00c8d\u0000\u0751\u0750\u0001"+
54640 		"\u0000\u0000\u0000\u0751\u0752\u0001\u0000\u0000\u0000\u0752\u0754\u0001"+
54641 		"\u0000\u0000\u0000\u0753\u0746\u0001\u0000\u0000\u0000\u0753\u0749\u0001"+
54642 		"\u0000\u0000\u0000\u0753\u074a\u0001\u0000\u0000\u0000\u0753\u074c\u0001"+
54643 		"\u0000\u0000\u0000\u0753\u074f\u0001\u0000\u0000\u0000\u0754\u00bd\u0001"+
54644 		"\u0000\u0000\u0000\u0755\u0756\u0005\u0197\u0000\u0000\u0756\u0757\u0005"+
54645 		"\u0018\u0000\u0000\u0757\u0758\u0007\u0017\u0000\u0000\u0758\u00bf\u0001"+
54646 		"\u0000\u0000\u0000\u0759\u075a\u0005\u0018\u0000\u0000\u075a\u075c\u0005"+
54647 		"\u02cb\u0000\u0000\u075b\u075d\u0005\u010f\u0000\u0000\u075c\u075b\u0001"+
54648 		"\u0000\u0000\u0000\u075c\u075d\u0001\u0000\u0000\u0000\u075d\u00c1\u0001"+
54649 		"\u0000\u0000\u0000\u075e\u075f\u0003\u00c4b\u0000\u075f\u0760\u0003\u00c6"+
54650 		"c\u0000\u0760\u00c3\u0001\u0000\u0000\u0000\u0761\u0762\u0007\u0018\u0000"+
54651 		"\u0000\u0762\u00c5\u0001\u0000\u0000\u0000\u0763\u0764\u0005\u0018\u0000"+
54652 		"\u0000\u0764\u0765\u0007\u0000\u0000\u0000\u0765\u00c7\u0001\u0000\u0000"+
54653 		"\u0000\u0766\u0767\u0005a\u0000\u0000\u0767\u0768\u0005\u00ef\u0000\u0000"+
54654 		"\u0768\u0769\u0005\u001f\u0000\u0000\u0769\u076a\u0003\u00cae\u0000\u076a"+
54655 		"\u076b\u0005 \u0000\u0000\u076b\u00c9\u0001\u0000\u0000\u0000\u076c\u0771"+
54656 		"\u0003\u00ccf\u0000\u076d\u076e\u0005%\u0000\u0000\u076e\u0770\u0003\u00cc"+
54657 		"f\u0000\u076f\u076d\u0001\u0000\u0000\u0000\u0770\u0773\u0001\u0000\u0000"+
54658 		"\u0000\u0771\u076f\u0001\u0000\u0000\u0000\u0771\u0772\u0001\u0000\u0000"+
54659 		"\u0000\u0772\u00cb\u0001\u0000\u0000\u0000\u0773\u0771\u0001\u0000\u0000"+
54660 		"\u0000\u0774\u0777\u0005\u02cb\u0000\u0000\u0775\u0777\u0003\u00ceg\u0000"+
54661 		"\u0776\u0774\u0001\u0000\u0000\u0000\u0776\u0775\u0001\u0000\u0000\u0000"+
54662 		"\u0777\u00cd\u0001\u0000\u0000\u0000\u0778\u0779\u0005\u02cb\u0000\u0000"+
54663 		"\u0779\u077a\u0005g\u0000\u0000\u077a\u077b\u0005\u02cb\u0000\u0000\u077b"+
54664 		"\u00cf\u0001\u0000\u0000\u0000\u077c\u077d\u0005\u019d\u0000\u0000\u077d"+
54665 		"\u077e\u0005\u001f\u0000\u0000\u077e\u077f\u0005\u01a6\u0000\u0000\u077f"+
54666 		"\u0780\u0005\u0018\u0000\u0000\u0780\u0782\u0005\u02cb\u0000\u0000\u0781"+
54667 		"\u0783\u0005\u010f\u0000\u0000\u0782\u0781\u0001\u0000\u0000\u0000\u0782"+
54668 		"\u0783\u0001\u0000\u0000\u0000\u0783\u0784\u0001\u0000\u0000\u0000\u0784"+
54669 		"\u0785\u0005%\u0000\u0000\u0785\u0786\u0005\u018d\u0000\u0000\u0786\u0787"+
54670 		"\u0005\u0018\u0000\u0000\u0787\u0788\u0007\u0019\u0000\u0000\u0788\u0789"+
54671 		"\u0005 \u0000\u0000\u0789\u00d1\u0001\u0000\u0000\u0000\u078a\u078f\u0005"+
54672 		"a\u0000\u0000\u078b\u078c\u0005\u001f\u0000\u0000\u078c\u078d\u0003\u00d0"+
54673 		"h\u0000\u078d\u078e\u0005 \u0000\u0000\u078e\u0790\u0001\u0000\u0000\u0000"+
54674 		"\u078f\u078b\u0001\u0000\u0000\u0000\u078f\u0790\u0001\u0000\u0000\u0000"+
54675 		"\u0790\u00d3\u0001\u0000\u0000\u0000\u0791\u0792\u0005\u02c8\u0000\u0000"+
54676 		"\u0792\u00d5\u0001\u0000\u0000\u0000\u0793\u0798\u0003\u00d4j\u0000\u0794"+
54677 		"\u0795\u0005%\u0000\u0000\u0795\u0797\u0003\u00d4j\u0000\u0796\u0794\u0001"+
54678 		"\u0000\u0000\u0000\u0797\u079a\u0001\u0000\u0000\u0000\u0798\u0796\u0001"+
54679 		"\u0000\u0000\u0000\u0798\u0799\u0001\u0000\u0000\u0000\u0799\u00d7\u0001"+
54680 		"\u0000\u0000\u0000\u079a\u0798\u0001\u0000\u0000\u0000\u079b\u079c\u0005"+
54681 		"\u0001\u0000\u0000\u079c\u00d9\u0001\u0000\u0000\u0000\u079d\u079e\u0003"+
54682 		"*\u0015\u0000\u079e\u00db\u0001\u0000\u0000\u0000\u079f\u07a0\u0007\u001a"+
54683 		"\u0000\u0000\u07a0\u07a5\u0005`\u0000\u0000\u07a1\u07a6\u0005\u020a\u0000"+
54684 		"\u0000\u07a2\u07a6\u0005\u0138\u0000\u0000\u07a3\u07a6\u0005\u020f\u0000"+
54685 		"\u0000\u07a4\u07a6\u0003\u001c\u000e\u0000\u07a5\u07a1\u0001\u0000\u0000"+
54686 		"\u0000\u07a5\u07a2\u0001\u0000\u0000\u0000\u07a5\u07a3\u0001\u0000\u0000"+
54687 		"\u0000\u07a5\u07a4\u0001\u0000\u0000\u0000\u07a6\u00dd\u0001\u0000\u0000"+
54688 		"\u0000\u07a7\u07a8\u0003*\u0015\u0000\u07a8\u00df\u0001\u0000\u0000\u0000"+
54689 		"\u07a9\u07aa\u0003\u00dam\u0000\u07aa\u00e1\u0001\u0000\u0000\u0000\u07ab"+
54690 		"\u07ac\u0003*\u0015\u0000\u07ac\u00e3\u0001\u0000\u0000\u0000\u07ad\u07ae"+
54691 		"\u0003\u00dam\u0000\u07ae\u00e5\u0001\u0000\u0000\u0000\u07af\u07b0\u0007"+
54692 		"\u001b\u0000\u0000\u07b0\u00e7\u0001\u0000\u0000\u0000\u07b1\u07b2\u0005"+
54693 		"c\u0000\u0000\u07b2\u07b3\u0005o\u0000\u0000\u07b3\u00e9\u0001\u0000\u0000"+
54694 		"\u0000\u07b4\u07b5\u0007\u001c\u0000\u0000\u07b5\u00eb\u0001\u0000\u0000"+
54695 		"\u0000\u07b6\u07b7\u0005\u009e\u0000\u0000\u07b7\u00ed\u0001\u0000\u0000"+
54696 		"\u0000\u07b8\u07ba\u0005\u0295\u0000\u0000\u07b9\u07bb\u0005\u0296\u0000"+
54697 		"\u0000\u07ba\u07b9\u0001\u0000\u0000\u0000\u07ba\u07bb\u0001\u0000\u0000"+
54698 		"\u0000\u07bb\u07bc\u0001\u0000\u0000\u0000\u07bc\u07bd\u0003\u00f0x\u0000"+
54699 		"\u07bd\u00ef\u0001\u0000\u0000\u0000\u07be\u07c4\u0003\u02ca\u0165\u0000"+
54700 		"\u07bf\u07c4\u0003\u02aa\u0155\u0000\u07c0\u07c4\u0003\u02b8\u015c\u0000"+
54701 		"\u07c1\u07c4\u0003\u02c2\u0161\u0000\u07c2\u07c4\u0003\u02a0\u0150\u0000"+
54702 		"\u07c3\u07be\u0001\u0000\u0000\u0000\u07c3\u07bf\u0001\u0000\u0000\u0000"+
54703 		"\u07c3\u07c0\u0001\u0000\u0000\u0000\u07c3\u07c1\u0001\u0000\u0000\u0000"+
54704 		"\u07c3\u07c2\u0001\u0000\u0000\u0000\u07c4\u00f1\u0001\u0000\u0000\u0000"+
54705 		"\u07c5\u07c8\u0003\u00f4z\u0000\u07c6\u07c8\u0003\u02a0\u0150\u0000\u07c7"+
54706 		"\u07c5\u0001\u0000\u0000\u0000\u07c7\u07c6\u0001\u0000\u0000\u0000\u07c8"+
54707 		"\u00f3\u0001\u0000\u0000\u0000\u07c9\u07ca\u00052\u0000\u0000\u07ca\u07cb"+
54708 		"\u0005;\u0000\u0000\u07cb\u07cc\u0003@ \u0000\u07cc\u07cd\u0003\u013c"+
54709 		"\u009e\u0000\u07cd\u07ce\u0003\u013e\u009f\u0000\u07ce\u00f5\u0001\u0000"+
54710 		"\u0000\u0000\u07cf\u07d0\u00052\u0000\u0000\u07d0\u07d1\u0003\u01ac\u00d6"+
54711 		"\u0000\u07d1\u07d2\u0005>\u0000\u0000\u07d2\u07d3\u0003V+\u0000\u07d3"+
54712 		"\u07d4\u0005a\u0000\u0000\u07d4\u07d5\u0003@ \u0000\u07d5\u07d6\u0003"+
54713 		"R)\u0000\u07d6\u07d7\u0003\u0252\u0129\u0000\u07d7\u00f7\u0001\u0000\u0000"+
54714 		"\u0000\u07d8\u07d9\u00052\u0000\u0000\u07d9\u07da\u0005\u00cc\u0000\u0000"+
54715 		"\u07da\u07db\u00032\u0019\u0000\u07db\u07dc\u0003\u01f4\u00fa\u0000\u07dc"+
54716 		"\u00f9\u0001\u0000\u0000\u0000\u07dd\u07e0\u00052\u0000\u0000\u07de\u07df"+
54717 		"\u0005i\u0000\u0000\u07df\u07e1\u00053\u0000\u0000\u07e0\u07de\u0001\u0000"+
54718 		"\u0000\u0000\u07e0\u07e1\u0001\u0000\u0000\u0000\u07e1\u07e2\u0001\u0000"+
54719 		"\u0000\u0000\u07e2\u07e3\u0005F\u0000\u0000\u07e3\u07e4\u00036\u001b\u0000"+
54720 		"\u07e4\u07e5\u0003\u0220\u0110\u0000\u07e5\u07e6\u0003\u0222\u0111\u0000"+
54721 		"\u07e6\u00fb\u0001\u0000\u0000\u0000\u07e7\u07ea\u00052\u0000\u0000\u07e8"+
54722 		"\u07e9\u0005i\u0000\u0000\u07e9\u07eb\u00053\u0000\u0000\u07ea\u07e8\u0001"+
54723 		"\u0000\u0000\u0000\u07ea\u07eb\u0001\u0000\u0000\u0000\u07eb\u07ec\u0001"+
54724 		"\u0000\u0000\u0000\u07ec\u07ed\u0007\u001d\u0000\u0000\u07ed\u07ee\u0003"+
54725 		"8\u001c\u0000\u07ee\u07ef\u0003\u0232\u0119\u0000\u07ef\u07f0\u0003\u0236"+
54726 		"\u011b\u0000\u07f0\u00fd\u0001\u0000\u0000\u0000\u07f1\u07f4\u00052\u0000"+
54727 		"\u0000\u07f2\u07f3\u0005i\u0000\u0000\u07f3\u07f5\u00053\u0000\u0000\u07f4"+
54728 		"\u07f2\u0001\u0000\u0000\u0000\u07f4\u07f5\u0001\u0000\u0000\u0000\u07f5"+
54729 		"\u07f6\u0001\u0000\u0000\u0000\u07f6\u07f7\u0005J\u0000\u0000\u07f7\u07f8"+
54730 		"\u0003:\u001d\u0000\u07f8\u07f9\u0003\u0240\u0120\u0000\u07f9\u00ff\u0001"+
54731 		"\u0000\u0000\u0000\u07fa\u07fd\u00052\u0000\u0000\u07fb\u07fc\u0005i\u0000"+
54732 		"\u0000\u07fc\u07fe\u00053\u0000\u0000\u07fd\u07fb\u0001\u0000\u0000\u0000"+
54733 		"\u07fd\u07fe\u0001\u0000\u0000\u0000\u07fe\u07ff\u0001\u0000\u0000\u0000"+
54734 		"\u07ff\u0800\u0005G\u0000\u0000\u0800\u0801\u0003<\u001e\u0000\u0801\u0802"+
54735 		"\u0005a\u0000\u0000\u0802\u0803\u0003\u024e\u0127\u0000\u0803\u0804\u0003"+
54736 		"\u0248\u0124\u0000\u0804\u0101\u0001\u0000\u0000\u0000\u0805\u0806\u0005"+
54737 		"2\u0000\u0000\u0806\u0807\u0005\u018c\u0000\u0000\u0807\u080b\u0003>\u001f"+
54738 		"\u0000\u0808\u080a\u0003\u0250\u0128\u0000\u0809\u0808\u0001\u0000\u0000"+
54739 		"\u0000\u080a\u080d\u0001\u0000\u0000\u0000\u080b\u0809\u0001\u0000\u0000"+
54740 		"\u0000\u080b\u080c\u0001\u0000\u0000\u0000\u080c\u0103\u0001\u0000\u0000"+
54741 		"\u0000\u080d\u080b\u0001\u0000\u0000\u0000\u080e\u080f\u00052\u0000\u0000"+
54742 		"\u080f\u0810\u0005\u016b\u0000\u0000\u0810\u0813\u0003F#\u0000\u0811\u0812"+
54743 		"\u0005\u0293\u0000\u0000\u0812\u0814\u0005\u02ca\u0000\u0000\u0813\u0811"+
54744 		"\u0001\u0000\u0000\u0000\u0813\u0814\u0001\u0000\u0000\u0000\u0814\u0815"+
54745 		"\u0001\u0000\u0000\u0000\u0815\u0816\u0005a\u0000\u0000\u0816\u0817\u0005"+
54746 		"\u017f\u0000\u0000\u0817\u0819\u0003B!\u0000\u0818\u081a\u0003\u0296\u014b"+
54747 		"\u0000\u0819\u0818\u0001\u0000\u0000\u0000\u0819\u081a\u0001\u0000\u0000"+
54748 		"\u0000\u081a\u0105\u0001\u0000\u0000\u0000\u081b\u081c\u00052\u0000\u0000"+
54749 		"\u081c\u081d\u00056\u0000\u0000\u081d\u0821\u0003\u029c\u014e\u0000\u081e"+
54750 		"\u0820\u0003\u029e\u014f\u0000\u081f\u081e\u0001\u0000\u0000\u0000\u0820"+
54751 		"\u0823\u0001\u0000\u0000\u0000\u0821\u081f\u0001\u0000\u0000\u0000\u0821"+
54752 		"\u0822\u0001\u0000\u0000\u0000\u0822\u0107\u0001\u0000\u0000\u0000\u0823"+
54753 		"\u0821\u0001\u0000\u0000\u0000\u0824\u0825\u00053\u0000\u0000\u0825\u0826"+
54754 		"\u0005;\u0000\u0000\u0826\u0827\u0003@ \u0000\u0827\u082c\u0003\u01ae"+
54755 		"\u00d7\u0000\u0828\u0829\u0005%\u0000\u0000\u0829\u082b\u0003\u01ae\u00d7"+
54756 		"\u0000\u082a\u0828\u0001\u0000\u0000\u0000\u082b\u082e\u0001\u0000\u0000"+
54757 		"\u0000\u082c\u082a\u0001\u0000\u0000\u0000\u082c\u082d\u0001\u0000\u0000"+
54758 		"\u0000\u082d\u0109\u0001\u0000\u0000\u0000\u082e\u082c\u0001\u0000\u0000"+
54759 		"\u0000\u082f\u0830\u00053\u0000\u0000\u0830\u0833\u0005>\u0000\u0000\u0831"+
54760 		"\u0834\u0003V+\u0000\u0832\u0834\u0005r\u0000\u0000\u0833\u0831\u0001"+
54761 		"\u0000\u0000\u0000\u0833\u0832\u0001\u0000\u0000\u0000\u0834\u0835\u0001"+
54762 		"\u0000\u0000\u0000\u0835\u0836\u0005a\u0000\u0000\u0836\u0837\u0003@ "+
54763 		"\u0000\u0837\u0838\u0003\u0258\u012c\u0000\u0838\u010b\u0001\u0000\u0000"+
54764 		"\u0000\u0839\u083a\u00053\u0000\u0000\u083a\u083d\u0005\u00cc\u0000\u0000"+
54765 		"\u083b\u083e\u00032\u0019\u0000\u083c\u083e\u0005\u009b\u0000\u0000\u083d"+
54766 		"\u083b\u0001\u0000\u0000\u0000\u083d\u083c\u0001\u0000\u0000\u0000\u083e"+
54767 		"\u0842\u0001\u0000\u0000\u0000\u083f\u0841\u0003\u0264\u0132\u0000\u0840"+
54768 		"\u083f\u0001\u0000\u0000\u0000\u0841\u0844\u0001\u0000\u0000\u0000\u0842"+
54769 		"\u0840\u0001\u0000\u0000\u0000\u0842\u0843\u0001\u0000\u0000\u0000\u0843"+
54770 		"\u010d\u0001\u0000\u0000\u0000\u0844\u0842\u0001\u0000\u0000\u0000\u0845"+
54771 		"\u0846\u00053\u0000\u0000\u0846\u0847\u0007\u001d\u0000\u0000\u0847\u0848"+
54772 		"\u00038\u001c\u0000\u0848\u0849\u0003\u0232\u0119\u0000\u0849\u084a\u0003"+
54773 		"\u0236\u011b\u0000\u084a\u010f\u0001\u0000\u0000\u0000\u084b\u084c\u0005"+
54774 		"3\u0000\u0000\u084c\u084d\u0005F\u0000\u0000\u084d\u084e\u00036\u001b"+
54775 		"\u0000\u084e\u084f\u0003\u0220\u0110\u0000\u084f\u0850\u0003\u0222\u0111"+
54776 		"\u0000\u0850\u0111\u0001\u0000\u0000\u0000\u0851\u0852\u00053\u0000\u0000"+
54777 		"\u0852\u0853\u0005J\u0000\u0000\u0853\u0854\u0003:\u001d\u0000\u0854\u0855"+
54778 		"\u0003\u0240\u0120\u0000\u0855\u0113\u0001\u0000\u0000\u0000\u0856\u0857"+
54779 		"\u00053\u0000\u0000\u0857\u0858\u0005G\u0000\u0000\u0858\u0859\u0003<"+
54780 		"\u001e\u0000\u0859\u085a\u0005a\u0000\u0000\u085a\u085b\u0003\u024e\u0127"+
54781 		"\u0000\u085b\u085c\u0003\u0248\u0124\u0000\u085c\u0115\u0001\u0000\u0000"+
54782 		"\u0000\u085d\u085e\u00053\u0000\u0000\u085e\u085f\u0005\u018c\u0000\u0000"+
54783 		"\u085f\u0863\u0003>\u001f\u0000\u0860\u0862\u0003\u0250\u0128\u0000\u0861"+
54784 		"\u0860\u0001\u0000\u0000\u0000\u0862\u0865\u0001\u0000\u0000\u0000\u0863"+
54785 		"\u0861\u0001\u0000\u0000\u0000\u0863\u0864\u0001\u0000\u0000\u0000\u0864"+
54786 		"\u0117\u0001\u0000\u0000\u0000\u0865\u0863\u0001\u0000\u0000\u0000\u0866"+
54787 		"\u0867\u00053\u0000\u0000\u0867\u0868\u0005\u016b\u0000\u0000\u0868\u086c"+
54788 		"\u0003F#\u0000\u0869\u086a\u0005a\u0000\u0000\u086a\u086b\u0005\u017f"+
54789 		"\u0000\u0000\u086b\u086d\u0003B!\u0000\u086c\u0869\u0001\u0000\u0000\u0000"+
54790 		"\u086c\u086d\u0001\u0000\u0000\u0000\u086d\u086f\u0001\u0000\u0000\u0000"+
54791 		"\u086e\u0870\u0003\u0298\u014c\u0000\u086f\u086e\u0001\u0000\u0000\u0000"+
54792 		"\u086f\u0870\u0001\u0000\u0000\u0000\u0870\u0119\u0001\u0000\u0000\u0000"+
54793 		"\u0871\u0872\u00053\u0000\u0000\u0872\u0873\u00056\u0000\u0000\u0873\u0874"+
54794 		"\u00034\u001a\u0000\u0874\u0876\u0005\u0294\u0000\u0000\u0875\u0877\u0003"+
54795 		"\u0376\u01bb\u0000\u0876\u0875\u0001\u0000\u0000\u0000\u0876\u0877\u0001"+
54796 		"\u0000\u0000\u0000\u0877\u0878\u0001\u0000\u0000\u0000\u0878\u0879\u0003"+
54797 		"\u00d4j\u0000\u0879\u011b\u0001\u0000\u0000\u0000\u087a\u087b\u00054\u0000"+
54798 		"\u0000\u087b\u087d\u0005;\u0000\u0000\u087c\u087e\u0003\u00e8t\u0000\u087d"+
54799 		"\u087c\u0001\u0000\u0000\u0000\u087d\u087e\u0001\u0000\u0000\u0000\u087e"+
54800 		"\u087f\u0001\u0000\u0000\u0000\u087f\u0880\u0003T*\u0000\u0880\u011d\u0001"+
54801 		"\u0000\u0000\u0000\u0881\u0882\u00054\u0000\u0000\u0882\u0884\u0005>\u0000"+
54802 		"\u0000\u0883\u0885\u0003\u00e8t\u0000\u0884\u0883\u0001\u0000\u0000\u0000"+
54803 		"\u0884\u0885\u0001\u0000\u0000\u0000\u0885\u0886\u0001\u0000\u0000\u0000"+
54804 		"\u0886\u0887\u0003V+\u0000\u0887\u0888\u0005a\u0000\u0000\u0888\u0889"+
54805 		"\u0003@ \u0000\u0889\u011f\u0001\u0000\u0000\u0000\u088a\u088b\u00054"+
54806 		"\u0000\u0000\u088b\u088d\u0005\u00cc\u0000\u0000\u088c\u088e\u0003\u00e8"+
54807 		"t\u0000\u088d\u088c\u0001\u0000\u0000\u0000\u088d\u088e\u0001\u0000\u0000"+
54808 		"\u0000\u088e\u088f\u0001\u0000\u0000\u0000\u088f\u0894\u00032\u0019\u0000"+
54809 		"\u0890\u0891\u0005%\u0000\u0000\u0891\u0893\u00032\u0019\u0000\u0892\u0890"+
54810 		"\u0001\u0000\u0000\u0000\u0893\u0896\u0001\u0000\u0000\u0000\u0894\u0892"+
54811 		"\u0001\u0000\u0000\u0000\u0894\u0895\u0001\u0000\u0000\u0000\u0895\u0121"+
54812 		"\u0001\u0000\u0000\u0000\u0896\u0894\u0001\u0000\u0000\u0000\u0897\u0898"+
54813 		"\u00054\u0000\u0000\u0898\u089a\u0005F\u0000\u0000\u0899\u089b\u0003\u00e8"+
54814 		"t\u0000\u089a\u0899\u0001\u0000\u0000\u0000\u089a\u089b\u0001\u0000\u0000"+
54815 		"\u0000\u089b\u089c\u0001\u0000\u0000\u0000\u089c\u08a1\u00036\u001b\u0000"+
54816 		"\u089d\u089e\u0005%\u0000\u0000\u089e\u08a0\u00036\u001b\u0000\u089f\u089d"+
54817 		"\u0001\u0000\u0000\u0000\u08a0\u08a3\u0001\u0000\u0000\u0000\u08a1\u089f"+
54818 		"\u0001\u0000\u0000\u0000\u08a1\u08a2\u0001\u0000\u0000\u0000\u08a2\u0123"+
54819 		"\u0001\u0000\u0000\u0000\u08a3\u08a1\u0001\u0000\u0000\u0000\u08a4\u08a5"+
54820 		"\u00054\u0000\u0000\u08a5\u08a7\u0007\u001d\u0000\u0000\u08a6\u08a8\u0003"+
54821 		"\u00e8t\u0000\u08a7\u08a6\u0001\u0000\u0000\u0000\u08a7\u08a8\u0001\u0000"+
54822 		"\u0000\u0000\u08a8\u08a9\u0001\u0000\u0000\u0000\u08a9\u08ae\u00038\u001c"+
54823 		"\u0000\u08aa\u08ab\u0005%\u0000\u0000\u08ab\u08ad\u00038\u001c\u0000\u08ac"+
54824 		"\u08aa\u0001\u0000\u0000\u0000\u08ad\u08b0\u0001\u0000\u0000\u0000\u08ae"+
54825 		"\u08ac\u0001\u0000\u0000\u0000\u08ae\u08af\u0001\u0000\u0000\u0000\u08af"+
54826 		"\u0125\u0001\u0000\u0000\u0000\u08b0\u08ae\u0001\u0000\u0000\u0000\u08b1"+
54827 		"\u08b2\u00054\u0000\u0000\u08b2\u08b4\u0005J\u0000\u0000\u08b3\u08b5\u0003"+
54828 		"\u00e8t\u0000\u08b4\u08b3\u0001\u0000\u0000\u0000\u08b4\u08b5\u0001\u0000"+
54829 		"\u0000\u0000\u08b5\u08b6\u0001\u0000\u0000\u0000\u08b6\u08bb\u0003:\u001d"+
54830 		"\u0000\u08b7\u08b8\u0005%\u0000\u0000\u08b8\u08ba\u0003:\u001d\u0000\u08b9"+
54831 		"\u08b7\u0001\u0000\u0000\u0000\u08ba\u08bd\u0001\u0000\u0000\u0000\u08bb"+
54832 		"\u08b9\u0001\u0000\u0000\u0000\u08bb\u08bc\u0001\u0000\u0000\u0000\u08bc"+
54833 		"\u0127\u0001\u0000\u0000\u0000\u08bd\u08bb\u0001\u0000\u0000\u0000\u08be"+
54834 		"\u08bf\u00054\u0000\u0000\u08bf\u08c1\u0005G\u0000\u0000\u08c0\u08c2\u0003"+
54835 		"\u00e8t\u0000\u08c1\u08c0\u0001\u0000\u0000\u0000\u08c1\u08c2\u0001\u0000"+
54836 		"\u0000\u0000\u08c2\u08c3\u0001\u0000\u0000\u0000\u08c3\u08c8\u0003<\u001e"+
54837 		"\u0000\u08c4\u08c5\u0005%\u0000\u0000\u08c5\u08c7\u0003<\u001e\u0000\u08c6"+
54838 		"\u08c4\u0001\u0000\u0000\u0000\u08c7\u08ca\u0001\u0000\u0000\u0000\u08c8"+
54839 		"\u08c6\u0001\u0000\u0000\u0000\u08c8\u08c9\u0001\u0000\u0000\u0000\u08c9"+
54840 		"\u08d1\u0001\u0000\u0000\u0000\u08ca\u08c8\u0001\u0000\u0000\u0000\u08cb"+
54841 		"\u08cf\u0005a\u0000\u0000\u08cc\u08d0\u0005\u00cc\u0000\u0000\u08cd\u08ce"+
54842 		"\u0005r\u0000\u0000\u08ce\u08d0\u0005\u014d\u0000\u0000\u08cf\u08cc\u0001"+
54843 		"\u0000\u0000\u0000\u08cf\u08cd\u0001\u0000\u0000\u0000\u08d0\u08d2\u0001"+
54844 		"\u0000\u0000\u0000\u08d1\u08cb\u0001\u0000\u0000\u0000\u08d1\u08d2\u0001"+
54845 		"\u0000\u0000\u0000\u08d2\u0129\u0001\u0000\u0000\u0000\u08d3\u08d4\u0005"+
54846 		"4\u0000\u0000\u08d4\u08d6\u0005\u018c\u0000\u0000\u08d5\u08d7\u0003\u00e8"+
54847 		"t\u0000\u08d6\u08d5\u0001\u0000\u0000\u0000\u08d6\u08d7\u0001\u0000\u0000"+
54848 		"\u0000\u08d7\u08d8\u0001\u0000\u0000\u0000\u08d8\u08dd\u0003>\u001f\u0000"+
54849 		"\u08d9\u08da\u0005%\u0000\u0000\u08da\u08dc\u0003>\u001f\u0000\u08db\u08d9"+
54850 		"\u0001\u0000\u0000\u0000\u08dc\u08df\u0001\u0000\u0000\u0000\u08dd\u08db"+
54851 		"\u0001\u0000\u0000\u0000\u08dd\u08de\u0001\u0000\u0000\u0000\u08de\u012b"+
54852 		"\u0001\u0000\u0000\u0000\u08df\u08dd\u0001\u0000\u0000\u0000\u08e0\u08e1"+
54853 		"\u00054\u0000\u0000\u08e1\u08e2\u0005\u016b\u0000\u0000\u08e2\u08e3\u0003"+
54854 		"F#\u0000\u08e3\u012d\u0001\u0000\u0000\u0000\u08e4\u08e5\u00054\u0000"+
54855 		"\u0000\u08e5\u08e7\u00056\u0000\u0000\u08e6\u08e8\u0003\u00e8t\u0000\u08e7"+
54856 		"\u08e6\u0001\u0000\u0000\u0000\u08e7\u08e8\u0001\u0000\u0000\u0000\u08e8"+
54857 		"\u08e9\u0001\u0000\u0000\u0000\u08e9\u08ea\u00034\u001a\u0000\u08ea\u012f"+
54858 		"\u0001\u0000\u0000\u0000\u08eb\u08ec\u00055\u0000\u0000\u08ec\u08ed\u0005"+
54859 		";\u0000\u0000\u08ed\u08ee\u0003@ \u0000\u08ee\u0131\u0001\u0000\u0000"+
54860 		"\u0000\u08ef\u08f0\u00050\u0000\u0000\u08f0\u08f1\u0005\u02bf\u0000\u0000"+
54861 		"\u08f1\u0900\u0003@ \u0000\u08f2\u08f4\u0005\u001f\u0000\u0000\u08f3\u08f2"+
54862 		"\u0001\u0000\u0000\u0000\u08f3\u08f4\u0001\u0000\u0000\u0000\u08f4\u08f5"+
54863 		"\u0001\u0000\u0000\u0000\u08f5\u08fa\u0003V+\u0000\u08f6\u08f7\u0005%"+
54864 		"\u0000\u0000\u08f7\u08f9\u0003V+\u0000\u08f8\u08f6\u0001\u0000\u0000\u0000"+
54865 		"\u08f9\u08fc\u0001\u0000\u0000\u0000\u08fa\u08f8\u0001\u0000\u0000\u0000"+
54866 		"\u08fa\u08fb\u0001\u0000\u0000\u0000\u08fb\u08fe\u0001\u0000\u0000\u0000"+
54867 		"\u08fc\u08fa\u0001\u0000\u0000\u0000\u08fd\u08ff\u0005 \u0000\u0000\u08fe"+
54868 		"\u08fd\u0001\u0000\u0000\u0000\u08fe\u08ff\u0001\u0000\u0000\u0000\u08ff"+
54869 		"\u0901\u0001\u0000\u0000\u0000\u0900\u08f3\u0001\u0000\u0000\u0000\u0900"+
54870 		"\u0901\u0001\u0000\u0000\u0000\u0901\u0903\u0001\u0000\u0000\u0000\u0902"+
54871 		"\u0904\u0003\u0134\u009a\u0000\u0903\u0902\u0001\u0000\u0000\u0000\u0903"+
54872 		"\u0904\u0001\u0000\u0000\u0000\u0904\u0133\u0001\u0000\u0000\u0000\u0905"+
54873 		"\u0907\u0005M\u0000\u0000\u0906\u0908\u0003\u0136\u009b\u0000\u0907\u0906"+
54874 		"\u0001\u0000\u0000\u0000\u0907\u0908\u0001\u0000\u0000\u0000\u0908\u090a"+
54875 		"\u0001\u0000\u0000\u0000\u0909\u090b\u0003\u0138\u009c\u0000\u090a\u0909"+
54876 		"\u0001\u0000\u0000\u0000\u090a\u090b\u0001\u0000\u0000\u0000\u090b\u0135"+
54877 		"\u0001\u0000\u0000\u0000\u090c\u0911\u0005\u02c0\u0000\u0000\u090d\u090e"+
54878 		"\u0005\u02c1\u0000\u0000\u090e\u090f\u0005\u02cb\u0000\u0000\u090f\u0911"+
54879 		"\u0007\u001e\u0000\u0000\u0910\u090c\u0001\u0000\u0000\u0000\u0910\u090d"+
54880 		"\u0001\u0000\u0000\u0000\u0911\u0915\u0001\u0000\u0000\u0000\u0912\u0913"+
54881 		"\u0005\u02c5\u0000\u0000\u0913\u0914\u0005\u0018\u0000\u0000\u0914\u0916"+
54882 		"\u0007\u0000\u0000\u0000\u0915\u0912\u0001\u0000\u0000\u0000\u0915\u0916"+
54883 		"\u0001\u0000\u0000\u0000\u0916\u0927\u0001\u0000\u0000\u0000\u0917\u0924"+
54884 		"\u0005\u02c2\u0000\u0000\u0918\u0919\u0005a\u0000\u0000\u0919\u091a\u0005"+
54885 		"\u00ef\u0000\u0000\u091a\u091b\u0005\u001f\u0000\u0000\u091b\u0920\u0005"+
54886 		"\u02cb\u0000\u0000\u091c\u091d\u0005%\u0000\u0000\u091d\u091f\u0005\u02cb"+
54887 		"\u0000\u0000\u091e\u091c\u0001\u0000\u0000\u0000\u091f\u0922\u0001\u0000"+
54888 		"\u0000\u0000\u0920\u091e\u0001\u0000\u0000\u0000\u0920\u0921\u0001\u0000"+
54889 		"\u0000\u0000\u0921\u0923\u0001\u0000\u0000\u0000\u0922\u0920\u0001\u0000"+
54890 		"\u0000\u0000\u0923\u0925\u0005 \u0000\u0000\u0924\u0918\u0001\u0000\u0000"+
54891 		"\u0000\u0924\u0925\u0001\u0000\u0000\u0000\u0925\u0927\u0001\u0000\u0000"+
54892 		"\u0000\u0926\u0910\u0001\u0000\u0000\u0000\u0926\u0917\u0001\u0000\u0000"+
54893 		"\u0000\u0927\u0137\u0001\u0000\u0000\u0000\u0928\u092a\u0005%\u0000\u0000"+
54894 		"\u0929\u0928\u0001\u0000\u0000\u0000\u0929\u092a\u0001\u0000\u0000\u0000"+
54895 		"\u092a\u092b\u0001\u0000\u0000\u0000\u092b\u092d\u0003\u013a\u009d\u0000"+
54896 		"\u092c\u0929\u0001\u0000\u0000\u0000\u092d\u092e\u0001\u0000\u0000\u0000"+
54897 		"\u092e\u092c\u0001\u0000\u0000\u0000\u092e\u092f\u0001\u0000\u0000\u0000"+
54898 		"\u092f\u0139\u0001\u0000\u0000\u0000\u0930\u093e\u0005r\u0000\u0000\u0931"+
54899 		"\u093e\u0005=\u0000\u0000\u0932\u093e\u0005>\u0000\u0000\u0933\u093e\u0005"+
54900 		"\u02c3\u0000\u0000\u0934\u0935\u0005\u026e\u0000\u0000\u0935\u0936\u0005"+
54901 		"\u0018\u0000\u0000\u0936\u093e\u0007\u0000\u0000\u0000\u0937\u0938\u0005"+
54902 		"\u0124\u0000\u0000\u0938\u0939\u0005\u0018\u0000\u0000\u0939\u093e\u0005"+
54903 		"\u02cb\u0000\u0000\u093a\u093b\u0005\u02c4\u0000\u0000\u093b\u093c\u0005"+
54904 		"\u0018\u0000\u0000\u093c\u093e\u0007\u0000\u0000\u0000\u093d\u0930\u0001"+
54905 		"\u0000\u0000\u0000\u093d\u0931\u0001\u0000\u0000\u0000\u093d\u0932\u0001"+
54906 		"\u0000\u0000\u0000\u093d\u0933\u0001\u0000\u0000\u0000\u093d\u0934\u0001"+
54907 		"\u0000\u0000\u0000\u093d\u0937\u0001\u0000\u0000\u0000\u093d\u093a\u0001"+
54908 		"\u0000\u0000\u0000\u093e\u013b\u0001\u0000\u0000\u0000\u093f\u0940\u0005"+
54909 		"`\u0000\u0000\u0940\u0942\u0005\u0118\u0000\u0000\u0941\u093f\u0001\u0000"+
54910 		"\u0000\u0000\u0941\u0942\u0001\u0000\u0000\u0000\u0942\u013d\u0001\u0000"+
54911 		"\u0000\u0000\u0943\u0944\u0003\u0140\u00a0\u0000\u0944\u0945\u0003\u0194"+
54912 		"\u00ca\u0000\u0945\u0946\u0003\u0196\u00cb\u0000\u0946\u013f\u0001\u0000"+
54913 		"\u0000\u0000\u0947\u0948\u0005\u001f\u0000\u0000\u0948\u094d\u0003\u0142"+
54914 		"\u00a1\u0000\u0949\u094a\u0005%\u0000\u0000\u094a\u094c\u0003\u0142\u00a1"+
54915 		"\u0000\u094b\u0949\u0001\u0000\u0000\u0000\u094c\u094f\u0001\u0000\u0000"+
54916 		"\u0000\u094d\u094b\u0001\u0000\u0000\u0000\u094d\u094e\u0001\u0000\u0000"+
54917 		"\u0000\u094e\u0952\u0001\u0000\u0000\u0000\u094f\u094d\u0001\u0000\u0000"+
54918 		"\u0000\u0950\u0951\u0005%\u0000\u0000\u0951\u0953\u0003\u0192\u00c9\u0000"+
54919 		"\u0952\u0950\u0001\u0000\u0000\u0000\u0952\u0953\u0001\u0000\u0000\u0000"+
54920 		"\u0953\u0954\u0001\u0000\u0000\u0000\u0954\u0955\u0005 \u0000\u0000\u0955"+
54921 		"\u0141\u0001\u0000\u0000\u0000\u0956\u095c\u0003\u0144\u00a2\u0000\u0957"+
54922 		"\u095c\u0003\u017a\u00bd\u0000\u0958\u095c\u0003\u017c\u00be\u0000\u0959"+
54923 		"\u095c\u0003\u017e\u00bf\u0000\u095a\u095c\u0003\u018c\u00c6\u0000\u095b"+
54924 		"\u0956\u0001\u0000\u0000\u0000\u095b\u0957\u0001\u0000\u0000\u0000\u095b"+
54925 		"\u0958\u0001\u0000\u0000\u0000\u095b\u0959\u0001\u0000\u0000\u0000\u095b"+
54926 		"\u095a\u0001\u0000\u0000\u0000\u095c\u0143\u0001\u0000\u0000\u0000\u095d"+
54927 		"\u095e\u0003H$\u0000\u095e\u0962\u0003\u009eO\u0000\u095f\u0961\u0003"+
54928 		"\u0146\u00a3\u0000\u0960\u095f\u0001\u0000\u0000\u0000\u0961\u0964\u0001"+
54929 		"\u0000\u0000\u0000\u0962\u0960\u0001\u0000\u0000\u0000\u0962\u0963\u0001"+
54930 		"\u0000\u0000\u0000\u0963\u0965\u0001\u0000\u0000\u0000\u0964\u0962\u0001"+
54931 		"\u0000\u0000\u0000\u0965\u0967\u0003\u0178\u00bc\u0000\u0966\u0968\u0003"+
54932 		"\u016e\u00b7\u0000\u0967\u0966\u0001\u0000\u0000\u0000\u0967\u0968\u0001"+
54933 		"\u0000\u0000\u0000\u0968\u0145\u0001\u0000\u0000\u0000\u0969\u099f\u0005"+
54934 		"\u0117\u0000\u0000\u096a\u096b\u0005\u0107\u0000\u0000\u096b\u099f\u0003"+
54935 		"Z-\u0000\u096c\u099f\u0005\u0139\u0000\u0000\u096d\u096e\u0005\u0123\u0000"+
54936 		"\u0000\u096e\u096f\u0005M\u0000\u0000\u096f\u0970\u0005\u001f\u0000\u0000"+
54937 		"\u0970\u0971\u0005F\u0000\u0000\u0971\u0972\u0005\u0018\u0000\u0000\u0972"+
54938 		"\u0973\u0005\u02ca\u0000\u0000\u0973\u099f\u0005 \u0000\u0000\u0974\u0975"+
54939 		"\u0005?\u0000\u0000\u0975\u0977\u0003\u00d4j\u0000\u0976\u0974\u0001\u0000"+
54940 		"\u0000\u0000\u0976\u0977\u0001\u0000\u0000\u0000\u0977\u0978\u0001\u0000"+
54941 		"\u0000\u0000\u0978\u0979\u0005\u009a\u0000\u0000\u0979\u099f\u0003b1\u0000"+
54942 		"\u097a\u0980\u0005\u011d\u0000\u0000\u097b\u097c\u0005\u001f\u0000\u0000"+
54943 		"\u097c\u097d\u0005\u02cb\u0000\u0000\u097d\u097e\u0005%\u0000\u0000\u097e"+
54944 		"\u097f\u0005\u02cb\u0000\u0000\u097f\u0981\u0005 \u0000\u0000\u0980\u097b"+
54945 		"\u0001\u0000\u0000\u0000\u0980\u0981\u0001\u0000\u0000\u0000\u0981\u099f"+
54946 		"\u0001\u0000\u0000\u0000\u0982\u0983\u0005k\u0000\u0000\u0983\u0984\u0005"+
54947 		"f\u0000\u0000\u0984\u099f\u0005\u0134\u0000\u0000\u0985\u0986\u0005\u00f8"+
54948 		"\u0000\u0000\u0986\u0987\u0005\u00f5\u0000\u0000\u0987\u0988\u0005`\u0000"+
54949 		"\u0000\u0988\u0989\u0005\u00f1\u0000\u0000\u0989\u098b\u0007\u001f\u0000"+
54950 		"\u0000\u098a\u098c\u0005\u00ec\u0000\u0000\u098b\u098a\u0001\u0000\u0000"+
54951 		"\u0000\u098b\u098c\u0001\u0000\u0000\u0000\u098c\u099f\u0001\u0000\u0000"+
54952 		"\u0000\u098d\u098f\u0005k\u0000\u0000\u098e\u098d\u0001\u0000\u0000\u0000"+
54953 		"\u098e\u098f\u0001\u0000\u0000\u0000\u098f\u0990\u0001\u0000\u0000\u0000"+
54954 		"\u0990\u099f\u0005l\u0000\u0000\u0991\u099f\u0005\u0136\u0000\u0000\u0992"+
54955 		"\u0993\u0005\u0115\u0000\u0000\u0993\u0994\u0005M\u0000\u0000\u0994\u099f"+
54956 		"\u0003\u0148\u00a4\u0000\u0995\u099a\u0003\u014a\u00a5\u0000\u0996\u0997"+
54957 		"\u0005%\u0000\u0000\u0997\u0999\u0003\u014a\u00a5\u0000\u0998\u0996\u0001"+
54958 		"\u0000\u0000\u0000\u0999\u099c\u0001\u0000\u0000\u0000\u099a\u0998\u0001"+
54959 		"\u0000\u0000\u0000\u099a\u099b\u0001\u0000\u0000\u0000\u099b\u099f\u0001"+
54960 		"\u0000\u0000\u0000\u099c\u099a\u0001\u0000\u0000\u0000\u099d\u099f\u0003"+
54961 		"\u016e\u00b7\u0000\u099e\u0969\u0001\u0000\u0000\u0000\u099e\u096a\u0001"+
54962 		"\u0000\u0000\u0000\u099e\u096c\u0001\u0000\u0000\u0000\u099e\u096d\u0001"+
54963 		"\u0000\u0000\u0000\u099e\u0976\u0001\u0000\u0000\u0000\u099e\u097a\u0001"+
54964 		"\u0000\u0000\u0000\u099e\u0982\u0001\u0000\u0000\u0000\u099e\u0985\u0001"+
54965 		"\u0000\u0000\u0000\u099e\u098e\u0001\u0000\u0000\u0000\u099e\u0991\u0001"+
54966 		"\u0000\u0000\u0000\u099e\u0992\u0001\u0000\u0000\u0000\u099e\u0995\u0001"+
54967 		"\u0000\u0000\u0000\u099e\u099d\u0001\u0000\u0000\u0000\u099f\u0147\u0001"+
54968 		"\u0000\u0000\u0000\u09a0\u09a1\u0005\u001f\u0000\u0000\u09a1\u09a2\u0005"+
54969 		"\u0193\u0000\u0000\u09a2\u09a3\u0005\u0018\u0000\u0000\u09a3\u09a4\u0003"+
54970 		"\u00d4j\u0000\u09a4\u09a5\u0005%\u0000\u0000\u09a5\u09a6\u0005\u0199\u0000"+
54971 		"\u0000\u09a6\u09a7\u0005\u0018\u0000\u0000\u09a7\u09a8\u0007 \u0000\u0000"+
54972 		"\u09a8\u09a9\u0005%\u0000\u0000\u09a9\u09aa\u0005\u0102\u0000\u0000\u09aa"+
54973 		"\u09ab\u0005\u0018\u0000\u0000\u09ab\u09ac\u0005\u02ca\u0000\u0000\u09ac"+
54974 		"\u09ad\u0005 \u0000\u0000\u09ad\u0149\u0001\u0000\u0000\u0000\u09ae\u09af"+
54975 		"\u0005?\u0000\u0000\u09af\u09b1\u0003X,\u0000\u09b0\u09ae\u0001\u0000"+
54976 		"\u0000\u0000\u09b0\u09b1\u0001\u0000\u0000\u0000\u09b1\u09b5\u0001\u0000"+
54977 		"\u0000\u0000\u09b2\u09b6\u0003\u0152\u00a9\u0000\u09b3\u09b6\u0003\u0166"+
54978 		"\u00b3\u0000\u09b4\u09b6\u0003\u016c\u00b6\u0000\u09b5\u09b2\u0001\u0000"+
54979 		"\u0000\u0000\u09b5\u09b3\u0001\u0000\u0000\u0000\u09b5\u09b4\u0001\u0000"+
54980 		"\u0000\u0000\u09b6\u014b\u0001\u0000\u0000\u0000\u09b7\u09b8\u0005?\u0000"+
54981 		"\u0000\u09b8\u09ba\u0003X,\u0000\u09b9\u09b7\u0001\u0000\u0000\u0000\u09b9"+
54982 		"\u09ba\u0001\u0000\u0000\u0000\u09ba\u09be\u0001\u0000\u0000\u0000\u09bb"+
54983 		"\u09bf\u0003\u0152\u00a9\u0000\u09bc\u09bf\u0003\u014e\u00a7\u0000\u09bd"+
54984 		"\u09bf\u0003\u016c\u00b6\u0000\u09be\u09bb\u0001\u0000\u0000\u0000\u09be"+
54985 		"\u09bc\u0001\u0000\u0000\u0000\u09be\u09bd\u0001\u0000\u0000\u0000\u09bf"+
54986 		"\u014d\u0001\u0000\u0000\u0000\u09c0\u09c1\u0005B\u0000\u0000\u09c1\u09c3"+
54987 		"\u0005C\u0000\u0000\u09c2\u09c0\u0001\u0000\u0000\u0000\u09c2\u09c3\u0001"+
54988 		"\u0000\u0000\u0000\u09c3\u09c4\u0001\u0000\u0000\u0000\u09c4\u09c9\u0003"+
54989 		"@ \u0000\u09c5\u09c6\u0005\u001f\u0000\u0000\u09c6\u09c7\u0003H$\u0000"+
54990 		"\u09c7\u09c8\u0005 \u0000\u0000\u09c8\u09ca\u0001\u0000\u0000\u0000\u09c9"+
54991 		"\u09c5\u0001\u0000\u0000\u0000\u09c9\u09ca\u0001\u0000\u0000\u0000\u09ca"+
54992 		"\u09ce\u0001\u0000\u0000\u0000\u09cb\u09cd\u0003\u0150\u00a8\u0000\u09cc"+
54993 		"\u09cb\u0001\u0000\u0000\u0000\u09cd\u09d0\u0001\u0000\u0000\u0000\u09ce"+
54994 		"\u09cc\u0001\u0000\u0000\u0000\u09ce\u09cf\u0001\u0000\u0000\u0000\u09cf"+
54995 		"\u014f\u0001\u0000\u0000\u0000\u09d0\u09ce\u0001\u0000\u0000\u0000\u09d1"+
54996 		"\u09d2\u0005a\u0000\u0000\u09d2\u09d6\u00051\u0000\u0000\u09d3\u09d4\u0005"+
54997 		"\u00f9\u0000\u0000\u09d4\u09d7\u0005\u0101\u0000\u0000\u09d5\u09d7\u0005"+
54998 		"\u00f6\u0000\u0000\u09d6\u09d3\u0001\u0000\u0000\u0000\u09d6\u09d5\u0001"+
54999 		"\u0000\u0000\u0000\u09d7\u09e0\u0001\u0000\u0000\u0000\u09d8\u09d9\u0005"+
55000 		"a\u0000\u0000\u09d9\u09da\u00050\u0000\u0000\u09da\u09db\u0005\u00f9\u0000"+
55001 		"\u0000\u09db\u09e0\u0005\u0101\u0000\u0000\u09dc\u09dd\u0005k\u0000\u0000"+
55002 		"\u09dd\u09de\u0005f\u0000\u0000\u09de\u09e0\u0005\u0134\u0000\u0000\u09df"+
55003 		"\u09d1\u0001\u0000\u0000\u0000\u09df\u09d8\u0001\u0000\u0000\u0000\u09df"+
55004 		"\u09dc\u0001\u0000\u0000\u0000\u09e0\u0151\u0001\u0000\u0000\u0000\u09e1"+
55005 		"\u09e4\u0003`0\u0000\u09e2\u09e4\u0005A\u0000\u0000\u09e3\u09e1\u0001"+
55006 		"\u0000\u0000\u0000\u09e3\u09e2\u0001\u0000\u0000\u0000\u09e4\u09e7\u0001"+
55007 		"\u0000\u0000\u0000\u09e5\u09e8\u0003\u0154\u00aa\u0000\u09e6\u09e8\u0003"+
55008 		"\u0162\u00b1\u0000\u09e7\u09e5\u0001\u0000\u0000\u0000\u09e7\u09e6\u0001"+
55009 		"\u0000\u0000\u0000\u09e8\u0153\u0001\u0000\u0000\u0000\u09e9\u09eb\u0003"+
55010 		"\u0156\u00ab\u0000\u09ea\u09e9\u0001\u0000\u0000\u0000\u09ea\u09eb\u0001"+
55011 		"\u0000\u0000\u0000\u09eb\u09ed\u0001\u0000\u0000\u0000\u09ec\u09ee\u0003"+
55012 		"\u0158\u00ac\u0000\u09ed\u09ec\u0001\u0000\u0000\u0000\u09ed\u09ee\u0001"+
55013 		"\u0000\u0000\u0000\u09ee\u09f0\u0001\u0000\u0000\u0000\u09ef\u09f1\u0003"+
55014 		"\u015a\u00ad\u0000\u09f0\u09ef\u0001\u0000\u0000\u0000\u09f0\u09f1\u0001"+
55015 		"\u0000\u0000\u0000\u09f1\u0155\u0001\u0000\u0000\u0000\u09f2\u09f3\u0007"+
55016 		"!\u0000\u0000\u09f3\u0157\u0001\u0000\u0000\u0000\u09f4\u0a03\u0005M\u0000"+
55017 		"\u0000\u09f5\u09f6\u0005\u0119\u0000\u0000\u09f6\u09f7\u0005\u0018\u0000"+
55018 		"\u0000\u09f7\u0a04\u0005\u02cb\u0000\u0000\u09f8\u09f9\u0005\u001f\u0000"+
55019 		"\u0000\u09f9\u09fe\u0003\u00bc^\u0000\u09fa\u09fb\u0005%\u0000\u0000\u09fb"+
55020 		"\u09fd\u0003\u00bc^\u0000\u09fc\u09fa\u0001\u0000\u0000\u0000\u09fd\u0a00"+
55021 		"\u0001\u0000\u0000\u0000\u09fe\u09fc\u0001\u0000\u0000\u0000\u09fe\u09ff"+
55022 		"\u0001\u0000\u0000\u0000\u09ff\u0a01\u0001\u0000\u0000\u0000\u0a00\u09fe"+
55023 		"\u0001\u0000\u0000\u0000\u0a01\u0a02\u0005 \u0000\u0000\u0a02\u0a04\u0001"+
55024 		"\u0000\u0000\u0000\u0a03\u09f5\u0001\u0000\u0000\u0000\u0a03\u09f8\u0001"+
55025 		"\u0000\u0000\u0000\u0a04\u0159\u0001\u0000\u0000\u0000\u0a05\u0a09\u0003"+
55026 		"\u015c\u00ae\u0000\u0a06\u0a09\u0003\u015e\u00af\u0000\u0a07\u0a09\u0003"+
55027 		"\u0160\u00b0\u0000\u0a08\u0a05\u0001\u0000\u0000\u0000\u0a08\u0a06\u0001"+
55028 		"\u0000\u0000\u0000\u0a08\u0a07\u0001\u0000\u0000\u0000\u0a09\u015b\u0001"+
55029 		"\u0000\u0000\u0000\u0a0a\u0a0b\u0005a\u0000\u0000\u0a0b\u0a0c\u00034\u001a"+
55030 		"\u0000\u0a0c\u0a0d\u0005\u001f\u0000\u0000\u0a0d\u0a0e\u0003H$\u0000\u0a0e"+
55031 		"\u0a0f\u0005 \u0000\u0000\u0a0f\u015d\u0001\u0000\u0000\u0000\u0a10\u0a11"+
55032 		"\u0005a\u0000\u0000\u0a11\u0a12\u0003\u00d4j\u0000\u0a12\u015f\u0001\u0000"+
55033 		"\u0000\u0000\u0a13\u0a14\u0005a\u0000\u0000\u0a14\u0a15\u0005\u02ca\u0000"+
55034 		"\u0000\u0a15\u0161\u0001\u0000\u0000\u0000\u0a16\u0a1d\u0005\u0106\u0000"+
55035 		"\u0000\u0a17\u0a18\u0005\u0106\u0000\u0000\u0a18\u0a1a\u0005\u011b\u0000"+
55036 		"\u0000\u0a19\u0a1b\u0003\u0164\u00b2\u0000\u0a1a\u0a19\u0001\u0000\u0000"+
55037 		"\u0000\u0a1a\u0a1b\u0001\u0000\u0000\u0000\u0a1b\u0a1d\u0001\u0000\u0000"+
55038 		"\u0000\u0a1c\u0a16\u0001\u0000\u0000\u0000\u0a1c\u0a17\u0001\u0000\u0000"+
55039 		"\u0000\u0a1d\u0163\u0001\u0000\u0000\u0000\u0a1e\u0a1f\u0005M\u0000\u0000"+
55040 		"\u0a1f\u0a20\u0005\u001f\u0000\u0000\u0a20\u0a21\u0005\u0191\u0000\u0000"+
55041 		"\u0a21\u0a22\u0005\u0018\u0000\u0000\u0a22\u0a23\u0005\u02cb\u0000\u0000"+
55042 		"\u0a23\u0a24\u0005 \u0000\u0000\u0a24\u0165\u0001\u0000\u0000\u0000\u0a25"+
55043 		"\u0a26\u0005B\u0000\u0000\u0a26\u0a28\u0005C\u0000\u0000\u0a27\u0a25\u0001"+
55044 		"\u0000\u0000\u0000\u0a27\u0a28\u0001\u0000\u0000\u0000\u0a28\u0a29\u0001"+
55045 		"\u0000\u0000\u0000\u0a29\u0a2a\u0005\u00fc\u0000\u0000\u0a2a\u0a2f\u0003"+
55046 		"@ \u0000\u0a2b\u0a2c\u0005\u001f\u0000\u0000\u0a2c\u0a2d\u0003H$\u0000"+
55047 		"\u0a2d\u0a2e\u0005 \u0000\u0000\u0a2e\u0a30\u0001\u0000\u0000\u0000\u0a2f"+
55048 		"\u0a2b\u0001\u0000\u0000\u0000\u0a2f\u0a30\u0001\u0000\u0000\u0000\u0a30"+
55049 		"\u0a34\u0001\u0000\u0000\u0000\u0a31\u0a33\u0003\u0168\u00b4\u0000\u0a32"+
55050 		"\u0a31\u0001\u0000\u0000\u0000\u0a33\u0a36\u0001\u0000\u0000\u0000\u0a34"+
55051 		"\u0a32\u0001\u0000\u0000\u0000\u0a34\u0a35\u0001\u0000\u0000\u0000\u0a35"+
55052 		"\u0167\u0001\u0000\u0000\u0000\u0a36\u0a34\u0001\u0000\u0000\u0000\u0a37"+
55053 		"\u0a38\u0005a\u0000\u0000\u0a38\u0a39\u0007\"\u0000\u0000\u0a39\u0a3e"+
55054 		"\u0003\u016a\u00b5\u0000\u0a3a\u0a3b\u0005k\u0000\u0000\u0a3b\u0a3c\u0005"+
55055 		"f\u0000\u0000\u0a3c\u0a3e\u0005\u0134\u0000\u0000\u0a3d\u0a37\u0001\u0000"+
55056 		"\u0000\u0000\u0a3d\u0a3a\u0001\u0000\u0000\u0000\u0a3e\u0169\u0001\u0000"+
55057 		"\u0000\u0000\u0a3f\u0a40\u0005\u00f9\u0000\u0000\u0a40\u0a45\u0005\u0101"+
55058 		"\u0000\u0000\u0a41\u0a45\u0005\u00f6\u0000\u0000\u0a42\u0a43\u0005:\u0000"+
55059 		"\u0000\u0a43\u0a45\u0007#\u0000\u0000\u0a44\u0a3f\u0001\u0000\u0000\u0000"+
55060 		"\u0a44\u0a41\u0001\u0000\u0000\u0000\u0a44\u0a42\u0001\u0000\u0000\u0000"+
55061 		"\u0a45\u016b\u0001\u0000\u0000\u0000\u0a46\u0a4a\u0005\u00f7\u0000\u0000"+
55062 		"\u0a47\u0a48\u0005k\u0000\u0000\u0a48\u0a49\u0005f\u0000\u0000\u0a49\u0a4b"+
55063 		"\u0005\u0134\u0000\u0000\u0a4a\u0a47\u0001\u0000\u0000\u0000\u0a4a\u0a4b"+
55064 		"\u0001\u0000\u0000\u0000\u0a4b\u0a4c\u0001\u0000\u0000\u0000\u0a4c\u0a4d"+
55065 		"\u0005\u001f\u0000\u0000\u0a4d\u0a4e\u0003b1\u0000\u0a4e\u0a4f\u0005 "+
55066 		"\u0000\u0000\u0a4f\u016d\u0001\u0000\u0000\u0000\u0a50\u0a51\u0005>\u0000"+
55067 		"\u0000\u0a51\u0a53\u0003V+\u0000\u0a52\u0a54\u0003\u0156\u00ab\u0000\u0a53"+
55068 		"\u0a52\u0001\u0000\u0000\u0000\u0a53\u0a54\u0001\u0000\u0000\u0000\u0a54"+
55069 		"\u0a56\u0001\u0000\u0000\u0000\u0a55\u0a57\u0003\u0170\u00b8\u0000\u0a56"+
55070 		"\u0a55\u0001\u0000\u0000\u0000\u0a56\u0a57\u0001\u0000\u0000\u0000\u0a57"+
55071 		"\u0a59\u0001\u0000\u0000\u0000\u0a58\u0a5a\u0003\u0172\u00b9\u0000\u0a59"+
55072 		"\u0a58\u0001\u0000\u0000\u0000\u0a59\u0a5a\u0001\u0000\u0000\u0000\u0a5a"+
55073 		"\u0a5c\u0001\u0000\u0000\u0000\u0a5b\u0a5d\u0003\u0176\u00bb\u0000\u0a5c"+
55074 		"\u0a5b\u0001\u0000\u0000\u0000\u0a5c\u0a5d\u0001\u0000\u0000\u0000\u0a5d"+
55075 		"\u016f\u0001\u0000\u0000\u0000\u0a5e\u0a5f\u0005M\u0000\u0000\u0a5f\u0a60"+
55076 		"\u0005\u001f\u0000\u0000\u0a60\u0a65\u0003\u00bc^\u0000\u0a61\u0a62\u0005"+
55077 		"%\u0000\u0000\u0a62\u0a64\u0003\u00bc^\u0000\u0a63\u0a61\u0001\u0000\u0000"+
55078 		"\u0000\u0a64\u0a67\u0001\u0000\u0000\u0000\u0a65\u0a63\u0001\u0000\u0000"+
55079 		"\u0000\u0a65\u0a66\u0001\u0000\u0000\u0000\u0a66\u0a68\u0001\u0000\u0000"+
55080 		"\u0000\u0a67\u0a65\u0001\u0000\u0000\u0000\u0a68\u0a69\u0005 \u0000\u0000"+
55081 		"\u0a69\u0171\u0001\u0000\u0000\u0000\u0a6a\u0a6e\u0003\u015c\u00ae\u0000"+
55082 		"\u0a6b\u0a6e\u0003\u015e\u00af\u0000\u0a6c\u0a6e\u0003\u0174\u00ba\u0000"+
55083 		"\u0a6d\u0a6a\u0001\u0000\u0000\u0000\u0a6d\u0a6b\u0001\u0000\u0000\u0000"+
55084 		"\u0a6d\u0a6c\u0001\u0000\u0000\u0000\u0a6e\u0173\u0001\u0000\u0000\u0000"+
55085 		"\u0a6f\u0a70\u0005a\u0000\u0000\u0a70\u0a71\u0005\u009a\u0000\u0000\u0a71"+
55086 		"\u0175\u0001\u0000\u0000\u0000\u0a72\u0a76\u0005\u01ab\u0000\u0000\u0a73"+
55087 		"\u0a77\u0003\u00d4j\u0000\u0a74\u0a77\u00034\u001a\u0000\u0a75\u0a77\u0005"+
55088 		"\u02ca\u0000\u0000\u0a76\u0a73\u0001\u0000\u0000\u0000\u0a76\u0a74\u0001"+
55089 		"\u0000\u0000\u0000\u0a76\u0a75\u0001\u0000\u0000\u0000\u0a77\u0177\u0001"+
55090 		"\u0000\u0000\u0000\u0a78\u0a7d\u0003\u014a\u00a5\u0000\u0a79\u0a7a\u0005"+
55091 		"%\u0000\u0000\u0a7a\u0a7c\u0003\u014a\u00a5\u0000\u0a7b\u0a79\u0001\u0000"+
55092 		"\u0000\u0000\u0a7c\u0a7f\u0001\u0000\u0000\u0000\u0a7d\u0a7b\u0001\u0000"+
55093 		"\u0000\u0000\u0a7d\u0a7e\u0001\u0000\u0000\u0000\u0a7e\u0a81\u0001\u0000"+
55094 		"\u0000\u0000\u0a7f\u0a7d\u0001\u0000\u0000\u0000\u0a80\u0a78\u0001\u0000"+
55095 		"\u0000\u0000\u0a80\u0a81\u0001\u0000\u0000\u0000\u0a81\u0179\u0001\u0000"+
55096 		"\u0000\u0000\u0a82\u0a83\u0003H$\u0000\u0a83\u0a84\u0005`\u0000\u0000"+
55097 		"\u0a84\u0a8a\u0003b1\u0000\u0a85\u0a88\u0005\u012e\u0000\u0000\u0a86\u0a87"+
55098 		"\u0005k\u0000\u0000\u0a87\u0a89\u0005l\u0000\u0000\u0a88\u0a86\u0001\u0000"+
55099 		"\u0000\u0000\u0a88\u0a89\u0001\u0000\u0000\u0000\u0a89\u0a8b\u0001\u0000"+
55100 		"\u0000\u0000\u0a8a\u0a85\u0001\u0000\u0000\u0000\u0a8a\u0a8b\u0001\u0000"+
55101 		"\u0000\u0000\u0a8b\u0a8d\u0001\u0000\u0000\u0000\u0a8c\u0a8e\u0003\u014c"+
55102 		"\u00a6\u0000\u0a8d\u0a8c\u0001\u0000\u0000\u0000\u0a8d\u0a8e\u0001\u0000"+
55103 		"\u0000\u0000\u0a8e\u017b\u0001\u0000\u0000\u0000\u0a8f\u0a90\u0003\u00d4"+
55104 		"j\u0000\u0a90\u0a91\u0005\u02c8\u0000\u0000\u0a91\u0a92\u0005\u0194\u0000"+
55105 		"\u0000\u0a92\u0a93\u0005f\u0000\u0000\u0a93\u0a94\u0005\u0190\u0000\u0000"+
55106 		"\u0a94\u017d\u0001\u0000\u0000\u0000\u0a95\u0a96\u0005?\u0000\u0000\u0a96"+
55107 		"\u0a98\u0003X,\u0000\u0a97\u0a95\u0001\u0000\u0000\u0000\u0a97\u0a98\u0001"+
55108 		"\u0000\u0000\u0000\u0a98\u0a9c\u0001\u0000\u0000\u0000\u0a99\u0a9d\u0003"+
55109 		"\u0180\u00c0\u0000\u0a9a\u0a9d\u0003\u018a\u00c5\u0000\u0a9b\u0a9d\u0003"+
55110 		"\u016c\u00b6\u0000\u0a9c\u0a99\u0001\u0000\u0000\u0000\u0a9c\u0a9a\u0001"+
55111 		"\u0000\u0000\u0000\u0a9c\u0a9b\u0001\u0000\u0000\u0000\u0a9d\u017f\u0001"+
55112 		"\u0000\u0000\u0000\u0a9e\u0aa1\u0003\u0182\u00c1\u0000\u0a9f\u0aa2\u0003"+
55113 		"\u0184\u00c2\u0000\u0aa0\u0aa2\u0003\u0186\u00c3\u0000\u0aa1\u0a9f\u0001"+
55114 		"\u0000\u0000\u0000\u0aa1\u0aa0\u0001\u0000\u0000\u0000\u0aa2\u0181\u0001"+
55115 		"\u0000\u0000\u0000\u0aa3\u0aa6\u0003`0\u0000\u0aa4\u0aa6\u0005A\u0000"+
55116 		"\u0000\u0aa5\u0aa3\u0001\u0000\u0000\u0000\u0aa5\u0aa4\u0001\u0000\u0000"+
55117 		"\u0000\u0aa6\u0183\u0001\u0000\u0000\u0000\u0aa7\u0aa9\u0003\u0156\u00ab"+
55118 		"\u0000\u0aa8\u0aa7\u0001\u0000\u0000\u0000\u0aa8\u0aa9\u0001\u0000\u0000"+
55119 		"\u0000\u0aa9\u0aaa\u0001\u0000\u0000\u0000\u0aaa\u0aac\u0003P(\u0000\u0aab"+
55120 		"\u0aad\u0003\u0158\u00ac\u0000\u0aac\u0aab\u0001\u0000\u0000\u0000\u0aac"+
55121 		"\u0aad\u0001\u0000\u0000\u0000\u0aad\u0aaf\u0001\u0000\u0000\u0000\u0aae"+
55122 		"\u0ab0\u0003\u015a\u00ad\u0000\u0aaf\u0aae\u0001\u0000\u0000\u0000\u0aaf"+
55123 		"\u0ab0\u0001\u0000\u0000\u0000\u0ab0\u0185\u0001\u0000\u0000\u0000\u0ab1"+
55124 		"\u0ab4\u0005\u0106\u0000\u0000\u0ab2\u0ab5\u0003P(\u0000\u0ab3\u0ab5\u0003"+
55125 		"\u0188\u00c4\u0000\u0ab4\u0ab2\u0001\u0000\u0000\u0000\u0ab4\u0ab3\u0001"+
55126 		"\u0000\u0000\u0000\u0ab5\u0187\u0001\u0000\u0000\u0000\u0ab6\u0ab7\u0005"+
55127 		"\u011b\u0000\u0000\u0ab7\u0ab8\u0003P(\u0000\u0ab8\u0ab9\u0003\u0164\u00b2"+
55128 		"\u0000\u0ab9\u0189\u0001\u0000\u0000\u0000\u0aba\u0abb\u0005B\u0000\u0000"+
55129 		"\u0abb\u0abd\u0005C\u0000\u0000\u0abc\u0aba\u0001\u0000\u0000\u0000\u0abc"+
55130 		"\u0abd\u0001\u0000\u0000\u0000\u0abd\u0abe\u0001\u0000\u0000\u0000\u0abe"+
55131 		"\u0abf\u0003P(\u0000\u0abf\u0ac0\u0005\u00fc\u0000\u0000\u0ac0\u0ac1\u0003"+
55132 		"@ \u0000\u0ac1\u0ac5\u0003P(\u0000\u0ac2\u0ac4\u0003\u0168\u00b4\u0000"+
55133 		"\u0ac3\u0ac2\u0001\u0000\u0000\u0000\u0ac4\u0ac7\u0001\u0000\u0000\u0000"+
55134 		"\u0ac5\u0ac3\u0001\u0000\u0000\u0000\u0ac5\u0ac6\u0001\u0000\u0000\u0000"+
55135 		"\u0ac6\u018b\u0001\u0000\u0000\u0000\u0ac7\u0ac5\u0001\u0000\u0000\u0000"+
55136 		"\u0ac8\u0ac9\u0005>\u0000\u0000\u0ac9\u0aca\u0003V+\u0000\u0aca\u0acd"+
55137 		"\u0003\u018e\u00c7\u0000\u0acb\u0acc\u0005M\u0000\u0000\u0acc\u0ace\u0003"+
55138 		"\u0190\u00c8\u0000\u0acd\u0acb\u0001\u0000\u0000\u0000\u0acd\u0ace\u0001"+
55139 		"\u0000\u0000\u0000\u0ace\u0ad0\u0001\u0000\u0000\u0000\u0acf\u0ad1\u0003"+
55140 		"\u0172\u00b9\u0000\u0ad0\u0acf\u0001\u0000\u0000\u0000\u0ad0\u0ad1\u0001"+
55141 		"\u0000\u0000\u0000\u0ad1\u0ad3\u0001\u0000\u0000\u0000\u0ad2\u0ad4\u0003"+
55142 		"\u0176\u00bb\u0000\u0ad3\u0ad2\u0001\u0000\u0000\u0000\u0ad3\u0ad4\u0001"+
55143 		"\u0000\u0000\u0000\u0ad4\u018d\u0001\u0000\u0000\u0000\u0ad5\u0ad7\u0003"+
55144 		"\u0156\u00ab\u0000\u0ad6\u0ad5\u0001\u0000\u0000\u0000\u0ad6\u0ad7\u0001"+
55145 		"\u0000\u0000\u0000\u0ad7\u0ad8\u0001\u0000\u0000\u0000\u0ad8\u0ae1\u0003"+
55146 		"P(\u0000\u0ad9\u0ada\u0005\u0105\u0000\u0000\u0ada\u0ae1\u0005\u0108\u0000"+
55147 		"\u0000\u0adb\u0add\u0005\u0106\u0000\u0000\u0adc\u0adb\u0001\u0000\u0000"+
55148 		"\u0000\u0adc\u0add\u0001\u0000\u0000\u0000\u0add\u0ade\u0001\u0000\u0000"+
55149 		"\u0000\u0ade\u0adf\u0005\u0108\u0000\u0000\u0adf\u0ae1\u0003P(\u0000\u0ae0"+
55150 		"\u0ad6\u0001\u0000\u0000\u0000\u0ae0\u0ad9\u0001\u0000\u0000\u0000\u0ae0"+
55151 		"\u0adc\u0001\u0000\u0000\u0000\u0ae1\u018f\u0001\u0000\u0000\u0000\u0ae2"+
55152 		"\u0ae3\u0005\u001f\u0000\u0000\u0ae3\u0ae8\u0003\u00bc^\u0000\u0ae4\u0ae5"+
55153 		"\u0005%\u0000\u0000\u0ae5\u0ae7\u0003\u00bc^\u0000\u0ae6\u0ae4\u0001\u0000"+
55154 		"\u0000\u0000\u0ae7\u0aea\u0001\u0000\u0000\u0000\u0ae8\u0ae6\u0001\u0000"+
55155 		"\u0000\u0000\u0ae8\u0ae9\u0001\u0000\u0000\u0000\u0ae9\u0aeb\u0001\u0000"+
55156 		"\u0000\u0000\u0aea\u0ae8\u0001\u0000\u0000\u0000\u0aeb\u0aec\u0005 \u0000"+
55157 		"\u0000\u0aec\u0191\u0001\u0000\u0000\u0000\u0aed\u0aee\u0005\u012d\u0000"+
55158 		"\u0000\u0aee\u0aef\u0005f\u0000\u0000\u0aef\u0af0\u0005\u019a\u0000\u0000"+
55159 		"\u0af0\u0af1\u0005\u001f\u0000\u0000\u0af1\u0af2\u0003H$\u0000\u0af2\u0af3"+
55160 		"\u0005%\u0000\u0000\u0af3\u0af4\u0003H$\u0000\u0af4\u0af5\u0005 \u0000"+
55161 		"\u0000\u0af5\u0193\u0001\u0000\u0000\u0000\u0af6\u0afe\u0005a\u0000\u0000"+
55162 		"\u0af7\u0af8\u00034\u001a\u0000\u0af8\u0af9\u0005\u001f\u0000\u0000\u0af9"+
55163 		"\u0afa\u0003H$\u0000\u0afa\u0afb\u0005 \u0000\u0000\u0afb\u0aff\u0001"+
55164 		"\u0000\u0000\u0000\u0afc\u0aff\u0003\u00d4j\u0000\u0afd\u0aff\u0005\u02ca"+
55165 		"\u0000\u0000\u0afe\u0af7\u0001\u0000\u0000\u0000\u0afe\u0afc\u0001\u0000"+
55166 		"\u0000\u0000\u0afe\u0afd\u0001\u0000\u0000\u0000\u0aff\u0b01\u0001\u0000"+
55167 		"\u0000\u0000\u0b00\u0af6\u0001\u0000\u0000\u0000\u0b00\u0b01\u0001\u0000"+
55168 		"\u0000\u0000\u0b01\u0195\u0001\u0000\u0000\u0000\u0b02\u0b05\u0005\u019c"+
55169 		"\u0000\u0000\u0b03\u0b06\u0003\u00d4j\u0000\u0b04\u0b06\u0005\u02ca\u0000"+
55170 		"\u0000\u0b05\u0b03\u0001\u0000\u0000\u0000\u0b05\u0b04\u0001\u0000\u0000"+
55171 		"\u0000\u0b06\u0b08\u0001\u0000\u0000\u0000\u0b07\u0b02\u0001\u0000\u0000"+
55172 		"\u0000\u0b07\u0b08\u0001\u0000\u0000\u0000\u0b08\u0b10\u0001\u0000\u0000"+
55173 		"\u0000\u0b09\u0b0a\u0005\u01ab\u0000\u0000\u0b0a\u0b0f\u00034\u001a\u0000"+
55174 		"\u0b0b\u0b0c\u0003\u00d4j\u0000\u0b0c\u0b0d\u0005\u02ca\u0000\u0000\u0b0d"+
55175 		"\u0b0f\u0001\u0000\u0000\u0000\u0b0e\u0b09\u0001\u0000\u0000\u0000\u0b0e"+
55176 		"\u0b0b\u0001\u0000\u0000\u0000\u0b0f\u0b11\u0001\u0000\u0000\u0000\u0b10"+
55177 		"\u0b0e\u0001\u0000\u0000\u0000\u0b10\u0b11\u0001\u0000\u0000\u0000\u0b11"+
55178 		"\u0b14\u0001\u0000\u0000\u0000\u0b12\u0b13\u0005M\u0000\u0000\u0b13\u0b15"+
55179 		"\u0003\u0198\u00cc\u0000\u0b14\u0b12\u0001\u0000\u0000\u0000\u0b14\u0b15"+
55180 		"\u0001\u0000\u0000\u0000\u0b15\u0197\u0001\u0000\u0000\u0000\u0b16\u0b17"+
55181 		"\u0005\u001f\u0000\u0000\u0b17\u0b1c\u0003\u019a\u00cd\u0000\u0b18\u0b19"+
55182 		"\u0005%\u0000\u0000\u0b19\u0b1b\u0003\u019a\u00cd\u0000\u0b1a\u0b18\u0001"+
55183 		"\u0000\u0000\u0000\u0b1b\u0b1e\u0001\u0000\u0000\u0000\u0b1c\u0b1a\u0001"+
55184 		"\u0000\u0000\u0000\u0b1c\u0b1d\u0001\u0000\u0000\u0000\u0b1d\u0b1f\u0001"+
55185 		"\u0000\u0000\u0000\u0b1e\u0b1c\u0001\u0000\u0000\u0000\u0b1f\u0b20\u0005"+
55186 		" \u0000\u0000\u0b20\u0199\u0001\u0000\u0000\u0000\u0b21\u0b22\u0005\u0197"+
55187 		"\u0000\u0000\u0b22\u0b23\u0005\u0018\u0000\u0000\u0b23\u0b2a\u0007$\u0000"+
55188 		"\u0000\u0b24\u0b25\u0005a\u0000\u0000\u0b25\u0b26\u0005\u00ef\u0000\u0000"+
55189 		"\u0b26\u0b27\u0005\u001f\u0000\u0000\u0b27\u0b28\u0003\u00cae\u0000\u0b28"+
55190 		"\u0b29\u0005 \u0000\u0000\u0b29\u0b2b\u0001\u0000\u0000\u0000\u0b2a\u0b24"+
55191 		"\u0001\u0000\u0000\u0000\u0b2a\u0b2b\u0001\u0000\u0000\u0000\u0b2b\u0b54"+
55192 		"\u0001\u0000\u0000\u0000\u0b2c\u0b2d\u0005\u01ad\u0000\u0000\u0b2d\u0b2e"+
55193 		"\u0005\u0018\u0000\u0000\u0b2e\u0b54\u0003\u00d4j\u0000\u0b2f\u0b30\u0005"+
55194 		"\u01ac\u0000\u0000\u0b30\u0b33\u0005\u0018\u0000\u0000\u0b31\u0b34\u0003"+
55195 		"Z-\u0000\u0b32\u0b34\u0005\u0196\u0000\u0000\u0b33\u0b31\u0001\u0000\u0000"+
55196 		"\u0000\u0b33\u0b32\u0001\u0000\u0000\u0000\u0b34\u0b54\u0001\u0000\u0000"+
55197 		"\u0000\u0b35\u0b36\u0005\u01af\u0000\u0000\u0b36\u0b37\u0005\u0018\u0000"+
55198 		"\u0000\u0b37\u0b54\u0003\u00d4j\u0000\u0b38\u0b39\u0005\u01b0\u0000\u0000"+
55199 		"\u0b39\u0b3a\u0005\u0018\u0000\u0000\u0b3a\u0b54\u0003\u00d4j\u0000\u0b3b"+
55200 		"\u0b3c\u0005\u01ae\u0000\u0000\u0b3c\u0b3d\u0005\u0018\u0000\u0000\u0b3d"+
55201 		"\u0b54\u0003\u00d4j\u0000\u0b3e\u0b3f\u0005\u019b\u0000\u0000\u0b3f\u0b40"+
55202 		"\u0005\u0018\u0000\u0000\u0b40\u0b42\u0005a\u0000\u0000\u0b41\u0b43\u0003"+
55203 		"\u01f2\u00f9\u0000\u0b42\u0b41\u0001\u0000\u0000\u0000\u0b42\u0b43\u0001"+
55204 		"\u0000\u0000\u0000\u0b43\u0b54\u0001\u0000\u0000\u0000\u0b44\u0b45\u0005"+
55205 		"\u01aa\u0000\u0000\u0b45\u0b4c\u0005\u0018\u0000\u0000\u0b46\u0b48\u0005"+
55206 		"a\u0000\u0000\u0b47\u0b49\u0003\u019e\u00cf\u0000\u0b48\u0b47\u0001\u0000"+
55207 		"\u0000\u0000\u0b48\u0b49\u0001\u0000\u0000\u0000\u0b49\u0b4d\u0001\u0000"+
55208 		"\u0000\u0000\u0b4a\u0b4b\u0005b\u0000\u0000\u0b4b\u0b4d\u0003\u01a2\u00d1"+
55209 		"\u0000\u0b4c\u0b46\u0001\u0000\u0000\u0000\u0b4c\u0b4a\u0001\u0000\u0000"+
55210 		"\u0000\u0b4d\u0b54\u0001\u0000\u0000\u0000\u0b4e\u0b54\u0003\u01a4\u00d2"+
55211 		"\u0000\u0b4f\u0b54\u0003\u01a6\u00d3\u0000\u0b50\u0b54\u0003\u01a8\u00d4"+
55212 		"\u0000\u0b51\u0b54\u0003\u019c\u00ce\u0000\u0b52\u0b54\u0003\u01aa\u00d5"+
55213 		"\u0000\u0b53\u0b21\u0001\u0000\u0000\u0000\u0b53\u0b2c\u0001\u0000\u0000"+
55214 		"\u0000\u0b53\u0b2f\u0001\u0000\u0000\u0000\u0b53\u0b35\u0001\u0000\u0000"+
55215 		"\u0000\u0b53\u0b38\u0001\u0000\u0000\u0000\u0b53\u0b3b\u0001\u0000\u0000"+
55216 		"\u0000\u0b53\u0b3e\u0001\u0000\u0000\u0000\u0b53\u0b44\u0001\u0000\u0000"+
55217 		"\u0000\u0b53\u0b4e\u0001\u0000\u0000\u0000\u0b53\u0b4f\u0001\u0000\u0000"+
55218 		"\u0000\u0b53\u0b50\u0001\u0000\u0000\u0000\u0b53\u0b51\u0001\u0000\u0000"+
55219 		"\u0000\u0b53\u0b52\u0001\u0000\u0000\u0000\u0b54\u019b\u0001\u0000\u0000"+
55220 		"\u0000\u0b55\u0b56\u0005\u01ec\u0000\u0000\u0b56\u0b57\u0005\u0018\u0000"+
55221 		"\u0000\u0b57\u0b58\u0005a\u0000\u0000\u0b58\u0b59\u0005\u001f\u0000\u0000"+
55222 		"\u0b59\u0b5a\u0005\u01ed\u0000\u0000\u0b5a\u0b5b\u0005\u0018\u0000\u0000"+
55223 		"\u0b5b\u0b5c\u0003H$\u0000\u0b5c\u0b5d\u0005%\u0000\u0000\u0b5d\u0b5e"+
55224 		"\u0005\u01ee\u0000\u0000\u0b5e\u0b5f\u0005\u0018\u0000\u0000\u0b5f\u0b60"+
55225 		"\u0003\u01e4\u00f2\u0000\u0b60\u019d\u0001\u0000\u0000\u0000\u0b61\u0b62"+
55226 		"\u0005\u001f\u0000\u0000\u0b62\u0b67\u0003\u01a0\u00d0\u0000\u0b63\u0b64"+
55227 		"\u0005%\u0000\u0000\u0b64\u0b66\u0003\u01a0\u00d0\u0000\u0b65\u0b63\u0001"+
55228 		"\u0000\u0000\u0000\u0b66\u0b69\u0001\u0000\u0000\u0000\u0b67\u0b65\u0001"+
55229 		"\u0000\u0000\u0000\u0b67\u0b68\u0001\u0000\u0000\u0000\u0b68\u0b6a\u0001"+
55230 		"\u0000\u0000\u0000\u0b69\u0b67\u0001\u0000\u0000\u0000\u0b6a\u0b6b\u0005"+
55231 		" \u0000\u0000\u0b6b\u019f\u0001\u0000\u0000\u0000\u0b6c\u0b6d\u0005\u01b1"+
55232 		"\u0000\u0000\u0b6d\u0b70\u0005\u0018\u0000\u0000\u0b6e\u0b71\u0005l\u0000"+
55233 		"\u0000\u0b6f\u0b71\u0003v;\u0000\u0b70\u0b6e\u0001\u0000\u0000\u0000\u0b70"+
55234 		"\u0b6f\u0001\u0000\u0000\u0000\u0b71\u0b72\u0001\u0000\u0000\u0000\u0b72"+
55235 		"\u0b74\u0005%\u0000\u0000\u0b73\u0b6c\u0001\u0000\u0000\u0000\u0b73\u0b74"+
55236 		"\u0001\u0000\u0000\u0000\u0b74\u0b75\u0001\u0000\u0000\u0000\u0b75\u0b76"+
55237 		"\u0005\u01a8\u0000\u0000\u0b76\u0b77\u0005\u0018\u0000\u0000\u0b77\u0b78"+
55238 		"\u0007%\u0000\u0000\u0b78\u01a1\u0001\u0000\u0000\u0000\u0b79\u0b7a\u0005"+
55239 		"\u001f\u0000\u0000\u0b7a\u0b7b\u0005\u01a8\u0000\u0000\u0b7b\u0b7c\u0005"+
55240 		"\u0018\u0000\u0000\u0b7c\u0b7d\u0005\u012c\u0000\u0000\u0b7d\u0b7e\u0005"+
55241 		" \u0000\u0000\u0b7e\u01a3\u0001\u0000\u0000\u0000\u0b7f\u0b80\u0005\u01a7"+
55242 		"\u0000\u0000\u0b80\u0b81\u0005\u0018\u0000\u0000\u0b81\u0b8c\u0005a\u0000"+
55243 		"\u0000\u0b82\u0b83\u0005\u0114\u0000\u0000\u0b83\u0b84\u0005\u0018\u0000"+
55244 		"\u0000\u0b84\u0b8c\u0007&\u0000\u0000\u0b85\u0b86\u0005\u019b\u0000\u0000"+
55245 		"\u0b86\u0b87\u0005\u0018\u0000\u0000\u0b87\u0b89\u0005a\u0000\u0000\u0b88"+
55246 		"\u0b8a\u0003\u01f2\u00f9\u0000\u0b89\u0b88\u0001\u0000\u0000\u0000\u0b89"+
55247 		"\u0b8a\u0001\u0000\u0000\u0000\u0b8a\u0b8c\u0001\u0000\u0000\u0000\u0b8b"+
55248 		"\u0b7f\u0001\u0000\u0000\u0000\u0b8b\u0b82\u0001\u0000\u0000\u0000\u0b8b"+
55249 		"\u0b85\u0001\u0000\u0000\u0000\u0b8c\u01a5\u0001\u0000\u0000\u0000\u0b8d"+
55250 		"\u0b8e\u0005\u0112\u0000\u0000\u0b8e\u0b96\u0005\u0018\u0000\u0000\u0b8f"+
55251 		"\u0b90\u0005\u011b\u0000\u0000\u0b90\u0b91\u0005\u001f\u0000\u0000\u0b91"+
55252 		"\u0b92\u0003H$\u0000\u0b92\u0b93\u0005 \u0000\u0000\u0b93\u0b97\u0001"+
55253 		"\u0000\u0000\u0000\u0b94\u0b97\u0005\u01a0\u0000\u0000\u0b95\u0b97\u0005"+
55254 		"\u0133\u0000\u0000\u0b96\u0b8f\u0001\u0000\u0000\u0000\u0b96\u0b94\u0001"+
55255 		"\u0000\u0000\u0000\u0b96\u0b95\u0001\u0000\u0000\u0000\u0b97\u01a7\u0001"+
55256 		"\u0000\u0000\u0000\u0b98\u0b99\u0005\u0105\u0000\u0000\u0b99\u0b9a\u0005"+
55257 		"\u0108\u0000\u0000\u0b9a\u0bb5\u0005>\u0000\u0000\u0b9b\u0b9c\u0005\u0105"+
55258 		"\u0000\u0000\u0b9c\u0b9d\u0005\u0108\u0000\u0000\u0b9d\u0b9e\u0005>\u0000"+
55259 		"\u0000\u0b9e\u0b9f\u0005u\u0000\u0000\u0b9f\u0bb5\u0003P(\u0000\u0ba0"+
55260 		"\u0bb5\u0005\u011c\u0000\u0000\u0ba1\u0ba2\u0005\u0105\u0000\u0000\u0ba2"+
55261 		"\u0ba3\u0005>\u0000\u0000\u0ba3\u0ba4\u0005\u001f\u0000\u0000\u0ba4\u0ba6"+
55262 		"\u0003H$\u0000\u0ba5\u0ba7\u0007\u0012\u0000\u0000\u0ba6\u0ba5\u0001\u0000"+
55263 		"\u0000\u0000\u0ba6\u0ba7\u0001\u0000\u0000\u0000\u0ba7\u0baf\u0001\u0000"+
55264 		"\u0000\u0000\u0ba8\u0ba9\u0005%\u0000\u0000\u0ba9\u0bab\u0003H$\u0000"+
55265 		"\u0baa\u0bac\u0007\u0012\u0000\u0000\u0bab\u0baa\u0001\u0000\u0000\u0000"+
55266 		"\u0bab\u0bac\u0001\u0000\u0000\u0000\u0bac\u0bae\u0001\u0000\u0000\u0000"+
55267 		"\u0bad\u0ba8\u0001\u0000\u0000\u0000\u0bae\u0bb1\u0001\u0000\u0000\u0000"+
55268 		"\u0baf\u0bad\u0001\u0000\u0000\u0000\u0baf\u0bb0\u0001\u0000\u0000\u0000"+
55269 		"\u0bb0\u0bb2\u0001\u0000\u0000\u0000\u0bb1\u0baf\u0001\u0000\u0000\u0000"+
55270 		"\u0bb2\u0bb3\u0005 \u0000\u0000\u0bb3\u0bb5\u0001\u0000\u0000\u0000\u0bb4"+
55271 		"\u0b98\u0001\u0000\u0000\u0000\u0bb4\u0b9b\u0001\u0000\u0000\u0000\u0bb4"+
55272 		"\u0ba0\u0001\u0000\u0000\u0000\u0bb4\u0ba1\u0001\u0000\u0000\u0000\u0bb5"+
55273 		"\u01a9\u0001\u0000\u0000\u0000\u0bb6\u0bb7\u0005\u00ee\u0000\u0000\u0bb7"+
55274 		"\u0bb8\u0005\u001f\u0000\u0000\u0bb8\u0bb9\u0003H$\u0000\u0bb9\u0bbb\u0005"+
55275 		"\u0131\u0000\u0000\u0bba\u0bbc\u0007\'\u0000\u0000\u0bbb\u0bba\u0001\u0000"+
55276 		"\u0000\u0000\u0bbb\u0bbc\u0001\u0000\u0000\u0000\u0bbc\u0bbd\u0001\u0000"+
55277 		"\u0000\u0000\u0bbd\u0bbe\u0005f\u0000\u0000\u0bbe\u0bbf\u0005L\u0000\u0000"+
55278 		"\u0bbf\u0bc0\u0005\u001f\u0000\u0000\u0bc0\u0bc5\u0003t:\u0000\u0bc1\u0bc2"+
55279 		"\u0005%\u0000\u0000\u0bc2\u0bc4\u0003t:\u0000\u0bc3\u0bc1\u0001\u0000"+
55280 		"\u0000\u0000\u0bc4\u0bc7\u0001\u0000\u0000\u0000\u0bc5\u0bc3\u0001\u0000"+
55281 		"\u0000\u0000\u0bc5\u0bc6\u0001\u0000\u0000\u0000\u0bc6\u0bc8\u0001\u0000"+
55282 		"\u0000\u0000\u0bc7\u0bc5\u0001\u0000\u0000\u0000\u0bc8\u0bc9\u0005 \u0000"+
55283 		"\u0000\u0bc9\u0bca\u0005 \u0000\u0000\u0bca\u01ab\u0001\u0000\u0000\u0000"+
55284 		"\u0bcb\u0bcd\u0005A\u0000\u0000\u0bcc\u0bcb\u0001\u0000\u0000\u0000\u0bcc"+
55285 		"\u0bcd\u0001\u0000\u0000\u0000\u0bcd\u0bcf\u0001\u0000\u0000\u0000\u0bce"+
55286 		"\u0bd0\u0003\u0156\u00ab\u0000\u0bcf\u0bce\u0001\u0000\u0000\u0000\u0bcf"+
55287 		"\u0bd0\u0001\u0000\u0000\u0000\u0bd0\u01ad\u0001\u0000\u0000\u0000\u0bd1"+
55288 		"\u0bdb\u0003\u01b0\u00d8\u0000\u0bd2\u0bdb\u0003\u01b2\u00d9\u0000\u0bd3"+
55289 		"\u0bdb\u0003\u01c2\u00e1\u0000\u0bd4\u0bdb\u0003\u01d2\u00e9\u0000\u0bd5"+
55290 		"\u0bdb\u0003\u01d4\u00ea\u0000\u0bd6\u0bdb\u0003\u01d6\u00eb\u0000\u0bd7"+
55291 		"\u0bdb\u0003\u01d8\u00ec\u0000\u0bd8\u0bdb\u0003\u01f0\u00f8\u0000\u0bd9"+
55292 		"\u0bdb\u0005\u0132\u0000\u0000\u0bda\u0bd1\u0001\u0000\u0000\u0000\u0bda"+
55293 		"\u0bd2\u0001\u0000\u0000\u0000\u0bda\u0bd3\u0001\u0000\u0000\u0000\u0bda"+
55294 		"\u0bd4\u0001\u0000\u0000\u0000\u0bda\u0bd5\u0001\u0000\u0000\u0000\u0bda"+
55295 		"\u0bd6\u0001\u0000\u0000\u0000\u0bda\u0bd7\u0001\u0000\u0000\u0000\u0bda"+
55296 		"\u0bd8\u0001\u0000\u0000\u0000\u0bda\u0bd9\u0001\u0000\u0000\u0000\u0bdb"+
55297 		"\u01af\u0001\u0000\u0000\u0000\u0bdc\u0bdd\u0005M\u0000\u0000\u0bdd\u0bdf"+
55298 		"\u0007(\u0000\u0000\u0bde\u0bdc\u0001\u0000\u0000\u0000\u0bde\u0bdf\u0001"+
55299 		"\u0000\u0000\u0000\u0bdf\u0be0\u0001\u0000\u0000\u0000\u0be0\u0be3\u0005"+
55300 		"9\u0000\u0000\u0be1\u0be4\u0003\u01b6\u00db\u0000\u0be2\u0be4\u0003\u01bc"+
55301 		"\u00de\u0000\u0be3\u0be1\u0001\u0000\u0000\u0000\u0be3\u0be2\u0001\u0000"+
55302 		"\u0000\u0000\u0be4\u01b1\u0001\u0000\u0000\u0000\u0be5\u0be6\u0003\u01b4"+
55303 		"\u00da\u0000\u0be6\u0be9\u0003\u009eO\u0000\u0be7\u0be8\u0005\u0107\u0000"+
55304 		"\u0000\u0be8\u0bea\u0003Z-\u0000\u0be9\u0be7\u0001\u0000\u0000\u0000\u0be9"+
55305 		"\u0bea\u0001\u0000\u0000\u0000\u0bea\u0bee\u0001\u0000\u0000\u0000\u0beb"+
55306 		"\u0bef\u0005l\u0000\u0000\u0bec\u0bed\u0005k\u0000\u0000\u0bed\u0bef\u0005"+
55307 		"l\u0000\u0000\u0bee\u0beb\u0001\u0000\u0000\u0000\u0bee\u0bec\u0001\u0000"+
55308 		"\u0000\u0000\u0bee\u0bef\u0001\u0000\u0000\u0000\u0bef\u0bf1\u0001\u0000"+
55309 		"\u0000\u0000\u0bf0\u0bf2\u0005\u0139\u0000\u0000\u0bf1\u0bf0\u0001\u0000"+
55310 		"\u0000\u0000\u0bf1\u0bf2\u0001\u0000\u0000\u0000\u0bf2\u01b3\u0001\u0000"+
55311 		"\u0000\u0000\u0bf3\u0bf4\u00053\u0000\u0000\u0bf4\u0bf5\u0005<\u0000\u0000"+
55312 		"\u0bf5\u0bf6\u0003H$\u0000\u0bf6\u01b5\u0001\u0000\u0000\u0000\u0bf7\u0bfc"+
55313 		"\u0003\u01b8\u00dc\u0000\u0bf8\u0bf9\u0005%\u0000\u0000\u0bf9\u0bfb\u0003"+
55314 		"\u01b8\u00dc\u0000\u0bfa\u0bf8\u0001\u0000\u0000\u0000\u0bfb\u0bfe\u0001"+
55315 		"\u0000\u0000\u0000\u0bfc\u0bfa\u0001\u0000\u0000\u0000\u0bfc\u0bfd\u0001"+
55316 		"\u0000\u0000\u0000\u0bfd\u01b7\u0001\u0000\u0000\u0000\u0bfe\u0bfc\u0001"+
55317 		"\u0000\u0000\u0000\u0bff\u0c06\u0003\u0144\u00a2\u0000\u0c00\u0c06\u0003"+
55318 		"\u017a\u00bd\u0000\u0c01\u0c06\u0003\u017c\u00be\u0000\u0c02\u0c06\u0003"+
55319 		"\u017e\u00bf\u0000\u0c03\u0c06\u0003\u01e6\u00f3\u0000\u0c04\u0c06\u0003"+
55320 		"\u01ba\u00dd\u0000\u0c05\u0bff\u0001\u0000\u0000\u0000\u0c05\u0c00\u0001"+
55321 		"\u0000\u0000\u0000\u0c05\u0c01\u0001\u0000\u0000\u0000\u0c05\u0c02\u0001"+
55322 		"\u0000\u0000\u0000\u0c05\u0c03\u0001\u0000\u0000\u0000\u0c05\u0c04\u0001"+
55323 		"\u0000\u0000\u0000\u0c06\u01b9\u0001\u0000\u0000\u0000\u0c07\u0c08\u0005"+
55324 		"?\u0000\u0000\u0c08\u0c0a\u0003X,\u0000\u0c09\u0c07\u0001\u0000\u0000"+
55325 		"\u0000\u0c09\u0c0a\u0001\u0000\u0000\u0000\u0c0a\u0c0b\u0001\u0000\u0000"+
55326 		"\u0000\u0c0b\u0c0c\u0005\u009a\u0000\u0000\u0c0c\u0c0d\u0003t:\u0000\u0c0d"+
55327 		"\u0c0e\u0005f\u0000\u0000\u0c0e\u0c0f\u0003H$\u0000\u0c0f\u01bb\u0001"+
55328 		"\u0000\u0000\u0000\u0c10\u0c11\u0003\u01be\u00df\u0000\u0c11\u0c12\u0005"+
55329 		"%\u0000\u0000\u0c12\u0c13\u0003\u0192\u00c9\u0000\u0c13\u0c19\u0001\u0000"+
55330 		"\u0000\u0000\u0c14\u0c15\u0003\u0192\u00c9\u0000\u0c15\u0c16\u0005%\u0000"+
55331 		"\u0000\u0c16\u0c17\u0003\u01be\u00df\u0000\u0c17\u0c19\u0001\u0000\u0000"+
55332 		"\u0000\u0c18\u0c10\u0001\u0000\u0000\u0000\u0c18\u0c14\u0001\u0000\u0000"+
55333 		"\u0000\u0c19\u01bd\u0001\u0000\u0000\u0000\u0c1a\u0c1b\u0003\u01c0\u00e0"+
55334 		"\u0000\u0c1b\u0c1c\u0005\u009a\u0000\u0000\u0c1c\u0c1f\u0003t:\u0000\u0c1d"+
55335 		"\u0c1e\u0005M\u0000\u0000\u0c1e\u0c20\u0005L\u0000\u0000\u0c1f\u0c1d\u0001"+
55336 		"\u0000\u0000\u0000\u0c1f\u0c20\u0001\u0000\u0000\u0000\u0c20\u0c21\u0001"+
55337 		"\u0000\u0000\u0000\u0c21\u0c22\u0005%\u0000\u0000\u0c22\u0c23\u0003\u01c0"+
55338 		"\u00e0\u0000\u0c23\u01bf\u0001\u0000\u0000\u0000\u0c24\u0c25\u0003H$\u0000"+
55339 		"\u0c25\u0c26\u0003\u00a0P\u0000\u0c26\u0c27\u0005\u00f8\u0000\u0000\u0c27"+
55340 		"\u0c28\u0005\u00f5\u0000\u0000\u0c28\u0c29\u0005`\u0000\u0000\u0c29\u0c2b"+
55341 		"\u0005\u00f1\u0000\u0000\u0c2a\u0c2c\u0007\u001f\u0000\u0000\u0c2b\u0c2a"+
55342 		"\u0001\u0000\u0000\u0000\u0c2b\u0c2c\u0001\u0000\u0000\u0000\u0c2c\u0c2e"+
55343 		"\u0001\u0000\u0000\u0000\u0c2d\u0c2f\u0005\u00ec\u0000\u0000\u0c2e\u0c2d"+
55344 		"\u0001\u0000\u0000\u0000\u0c2e\u0c2f\u0001\u0000\u0000\u0000\u0c2f\u0c32"+
55345 		"\u0001\u0000\u0000\u0000\u0c30\u0c31\u0005k\u0000\u0000\u0c31\u0c33\u0005"+
55346 		"l\u0000\u0000\u0c32\u0c30\u0001\u0000\u0000\u0000\u0c32\u0c33\u0001\u0000"+
55347 		"\u0000\u0000\u0c33\u0c36\u0001\u0000\u0000\u0000\u0c34\u0c35\u0005?\u0000"+
55348 		"\u0000\u0c35\u0c37\u0003\u00d4j\u0000\u0c36\u0c34\u0001\u0000\u0000\u0000"+
55349 		"\u0c36\u0c37\u0001\u0000\u0000\u0000\u0c37\u01c1\u0001\u0000\u0000\u0000"+
55350 		"\u0c38\u0c3f\u00054\u0000\u0000\u0c39\u0c40\u0003\u01c4\u00e2\u0000\u0c3a"+
55351 		"\u0c40\u0003\u01ce\u00e7\u0000\u0c3b\u0c40\u0003\u01d0\u00e8\u0000\u0c3c"+
55352 		"\u0c3d\u0005\u012d\u0000\u0000\u0c3d\u0c3e\u0005f\u0000\u0000\u0c3e\u0c40"+
55353 		"\u0005\u019a\u0000\u0000\u0c3f\u0c39\u0001\u0000\u0000\u0000\u0c3f\u0c3a"+
55354 		"\u0001\u0000\u0000\u0000\u0c3f\u0c3b\u0001\u0000\u0000\u0000\u0c3f\u0c3c"+
55355 		"\u0001\u0000\u0000\u0000\u0c40\u01c3\u0001\u0000\u0000\u0000\u0c41\u0c43"+
55356 		"\u0005?\u0000\u0000\u0c42\u0c41\u0001\u0000\u0000\u0000\u0c42\u0c43\u0001"+
55357 		"\u0000\u0000\u0000\u0c43\u0c45\u0001\u0000\u0000\u0000\u0c44\u0c46\u0003"+
55358 		"\u00e8t\u0000\u0c45\u0c44\u0001\u0000\u0000\u0000\u0c45\u0c46\u0001\u0000"+
55359 		"\u0000\u0000\u0c46\u0c47\u0001\u0000\u0000\u0000\u0c47\u0c4c\u0003\u01c6"+
55360 		"\u00e3\u0000\u0c48\u0c49\u0005%\u0000\u0000\u0c49\u0c4b\u0003\u01c6\u00e3"+
55361 		"\u0000\u0c4a\u0c48\u0001\u0000\u0000\u0000\u0c4b\u0c4e\u0001\u0000\u0000"+
55362 		"\u0000\u0c4c\u0c4a\u0001\u0000\u0000\u0000\u0c4c\u0c4d\u0001\u0000\u0000"+
55363 		"\u0000\u0c4d\u01c5\u0001\u0000\u0000\u0000\u0c4e\u0c4c\u0001\u0000\u0000"+
55364 		"\u0000\u0c4f\u0c51\u0003X,\u0000\u0c50\u0c52\u0003\u01c8\u00e4\u0000\u0c51"+
55365 		"\u0c50\u0001\u0000\u0000\u0000\u0c51\u0c52\u0001\u0000\u0000\u0000\u0c52"+
55366 		"\u01c7\u0001\u0000\u0000\u0000\u0c53\u0c54\u0005M\u0000\u0000\u0c54\u0c55"+
55367 		"\u0005\u001f\u0000\u0000\u0c55\u0c5a\u0003\u01ca\u00e5\u0000\u0c56\u0c57"+
55368 		"\u0005%\u0000\u0000\u0c57\u0c59\u0003\u01ca\u00e5\u0000\u0c58\u0c56\u0001"+
55369 		"\u0000\u0000\u0000\u0c59\u0c5c\u0001\u0000\u0000\u0000\u0c5a\u0c58\u0001"+
55370 		"\u0000\u0000\u0000\u0c5a\u0c5b\u0001\u0000\u0000\u0000\u0c5b\u0c5d\u0001"+
55371 		"\u0000\u0000\u0000\u0c5c\u0c5a\u0001\u0000\u0000\u0000\u0c5d\u0c5e\u0005"+
55372 		" \u0000\u0000\u0c5e\u01c9\u0001\u0000\u0000\u0000\u0c5f\u0c60\u0005\u0124"+
55373 		"\u0000\u0000\u0c60\u0c61\u0005\u0018\u0000\u0000\u0c61\u0c71\u0005\u02cb"+
55374 		"\u0000\u0000\u0c62\u0c63\u0005\u0129\u0000\u0000\u0c63\u0c64\u0005\u0018"+
55375 		"\u0000\u0000\u0c64\u0c71\u0003\u01cc\u00e6\u0000\u0c65\u0c66\u0005\u0125"+
55376 		"\u0000\u0000\u0c66\u0c6e\u0005g\u0000\u0000\u0c67\u0c68\u00034\u001a\u0000"+
55377 		"\u0c68\u0c69\u0005\u001f\u0000\u0000\u0c69\u0c6a\u0003H$\u0000\u0c6a\u0c6b"+
55378 		"\u0005 \u0000\u0000\u0c6b\u0c6f\u0001\u0000\u0000\u0000\u0c6c\u0c6f\u0003"+
55379 		"\u00d4j\u0000\u0c6d\u0c6f\u0005\u02ca\u0000\u0000\u0c6e\u0c67\u0001\u0000"+
55380 		"\u0000\u0000\u0c6e\u0c6c\u0001\u0000\u0000\u0000\u0c6e\u0c6d\u0001\u0000"+
55381 		"\u0000\u0000\u0c6f\u0c71\u0001\u0000\u0000\u0000\u0c70\u0c5f\u0001\u0000"+
55382 		"\u0000\u0000\u0c70\u0c62\u0001\u0000\u0000\u0000\u0c70\u0c65\u0001\u0000"+
55383 		"\u0000\u0000\u0c71\u01cb\u0001\u0000\u0000\u0000\u0c72\u0c73\u0007\u0000"+
55384 		"\u0000\u0000\u0c73\u01cd\u0001\u0000\u0000\u0000\u0c74\u0c76\u0005<\u0000"+
55385 		"\u0000\u0c75\u0c77\u0003\u00e8t\u0000\u0c76\u0c75\u0001\u0000\u0000\u0000"+
55386 		"\u0c76\u0c77\u0001\u0000\u0000\u0000\u0c77\u0c78\u0001\u0000\u0000\u0000"+
55387 		"\u0c78\u0c7d\u0003H$\u0000\u0c79\u0c7a\u0005%\u0000\u0000\u0c7a\u0c7c"+
55388 		"\u0003H$\u0000\u0c7b\u0c79\u0001\u0000\u0000\u0000\u0c7c\u0c7f\u0001\u0000"+
55389 		"\u0000\u0000\u0c7d\u0c7b\u0001\u0000\u0000\u0000\u0c7d\u0c7e\u0001\u0000"+
55390 		"\u0000\u0000\u0c7e\u01cf\u0001\u0000\u0000\u0000\u0c7f\u0c7d\u0001\u0000"+
55391 		"\u0000\u0000\u0c80\u0c82\u0005>\u0000\u0000\u0c81\u0c83\u0003\u00e8t\u0000"+
55392 		"\u0c82\u0c81\u0001\u0000\u0000\u0000\u0c82\u0c83\u0001\u0000\u0000\u0000"+
55393 		"\u0c83\u0c84\u0001\u0000\u0000\u0000\u0c84\u0c89\u0003V+\u0000\u0c85\u0c86"+
55394 		"\u0005%\u0000\u0000\u0c86\u0c88\u0003V+\u0000\u0c87\u0c85\u0001\u0000"+
55395 		"\u0000\u0000\u0c88\u0c8b\u0001\u0000\u0000\u0000\u0c89\u0c87\u0001\u0000"+
55396 		"\u0000\u0000\u0c89\u0c8a\u0001\u0000\u0000\u0000\u0c8a\u01d1\u0001\u0000"+
55397 		"\u0000\u0000\u0c8b\u0c89\u0001\u0000\u0000\u0000\u0c8c\u0c8e\u0005M\u0000"+
55398 		"\u0000\u0c8d\u0c8c\u0001\u0000\u0000\u0000\u0c8d\u0c8e\u0001\u0000\u0000"+
55399 		"\u0000\u0c8e\u0c8f\u0001\u0000\u0000\u0000\u0c8f\u0c90\u0007(\u0000\u0000"+
55400 		"\u0c90\u0c93\u0005?\u0000\u0000\u0c91\u0c94\u0005r\u0000\u0000\u0c92\u0c94"+
55401 		"\u0003X,\u0000\u0c93\u0c91\u0001\u0000\u0000\u0000\u0c93\u0c92\u0001\u0000"+
55402 		"\u0000\u0000\u0c94\u01d3\u0001\u0000\u0000\u0000\u0c95\u0c96\u0007)\u0000"+
55403 		"\u0000\u0c96\u0c99\u0005G\u0000\u0000\u0c97\u0c9a\u0005r\u0000\u0000\u0c98"+
55404 		"\u0c9a\u0003\u00d6k\u0000\u0c99\u0c97\u0001\u0000\u0000\u0000\u0c99\u0c98"+
55405 		"\u0001\u0000\u0000\u0000\u0c9a\u01d5\u0001\u0000\u0000\u0000\u0c9b\u0c9e"+
55406 		"\u0005\u013a\u0000\u0000\u0c9c\u0c9d\u0005\u00ee\u0000\u0000\u0c9d\u0c9f"+
55407 		"\u0003b1\u0000\u0c9e\u0c9c\u0001\u0000\u0000\u0000\u0c9e\u0c9f\u0001\u0000"+
55408 		"\u0000\u0000\u0c9f\u0ca0\u0001\u0000\u0000\u0000\u0ca0\u0ca1\u0005g\u0000"+
55409 		"\u0000\u0ca1\u0ca4\u0003@ \u0000\u0ca2\u0ca3\u0005\u00ee\u0000\u0000\u0ca3"+
55410 		"\u0ca5\u0003b1\u0000\u0ca4\u0ca2\u0001\u0000\u0000\u0000\u0ca4\u0ca5\u0001"+
55411 		"\u0000\u0000\u0000\u0ca5\u0cab\u0001\u0000\u0000\u0000\u0ca6\u0ca7\u0005"+
55412 		"M\u0000\u0000\u0ca7\u0ca8\u0005\u001f\u0000\u0000\u0ca8\u0ca9\u0003\u00d0"+
55413 		"h\u0000\u0ca9\u0caa\u0005 \u0000\u0000\u0caa\u0cac\u0001\u0000\u0000\u0000"+
55414 		"\u0cab\u0ca6\u0001\u0000\u0000\u0000\u0cab\u0cac\u0001\u0000\u0000\u0000"+
55415 		"\u0cac\u01d7\u0001\u0000\u0000\u0000\u0cad\u0cae\u0005:\u0000\u0000\u0cae"+
55416 		"\u0cb1\u0005\u001f\u0000\u0000\u0caf\u0cb2\u0003\u01da\u00ed\u0000\u0cb0"+
55417 		"\u0cb2\u0003\u01dc\u00ee\u0000\u0cb1\u0caf\u0001\u0000\u0000\u0000\u0cb1"+
55418 		"\u0cb0\u0001\u0000\u0000\u0000\u0cb2\u0cb3\u0001\u0000\u0000\u0000\u0cb3"+
55419 		"\u0cb4\u0005 \u0000\u0000\u0cb4\u01d9\u0001\u0000\u0000\u0000\u0cb5\u0cb6"+
55420 		"\u0005\u01ab\u0000\u0000\u0cb6\u0cba\u0005\u0018\u0000\u0000\u0cb7\u0cbb"+
55421 		"\u00034\u001a\u0000\u0cb8\u0cbb\u0003\u00d4j\u0000\u0cb9\u0cbb\u0005\u02ca"+
55422 		"\u0000\u0000\u0cba\u0cb7\u0001\u0000\u0000\u0000\u0cba\u0cb8\u0001\u0000"+
55423 		"\u0000\u0000\u0cba\u0cb9\u0001\u0000\u0000\u0000\u0cbb\u01db\u0001\u0000"+
55424 		"\u0000\u0000\u0cbc\u0cbd\u0005\u019b\u0000\u0000\u0cbd\u0cc3\u0005\u0018"+
55425 		"\u0000\u0000\u0cbe\u0cc4\u0005b\u0000\u0000\u0cbf\u0cc1\u0005a\u0000\u0000"+
55426 		"\u0cc0\u0cc2\u0003\u01de\u00ef\u0000\u0cc1\u0cc0\u0001\u0000\u0000\u0000"+
55427 		"\u0cc1\u0cc2\u0001\u0000\u0000\u0000\u0cc2\u0cc4\u0001\u0000\u0000\u0000"+
55428 		"\u0cc3\u0cbe\u0001\u0000\u0000\u0000\u0cc3\u0cbf\u0001\u0000\u0000\u0000"+
55429 		"\u0cc4\u01dd\u0001\u0000\u0000\u0000\u0cc5\u0cc9\u0005\u001f\u0000\u0000"+
55430 		"\u0cc6\u0cc7\u0005\u01b3\u0000\u0000\u0cc7\u0cc8\u0005\u0018\u0000\u0000"+
55431 		"\u0cc8\u0cca\u0003@ \u0000\u0cc9\u0cc6\u0001\u0000\u0000\u0000\u0cc9\u0cca"+
55432 		"\u0001\u0000\u0000\u0000\u0cca\u0ccc\u0001\u0000\u0000\u0000\u0ccb\u0ccd"+
55433 		"\u0003\u01e0\u00f0\u0000\u0ccc\u0ccb\u0001\u0000\u0000\u0000\u0ccc\u0ccd"+
55434 		"\u0001\u0000\u0000\u0000\u0ccd\u0ccf\u0001\u0000\u0000\u0000\u0cce\u0cd0"+
55435 		"\u0003\u01e2\u00f1\u0000\u0ccf\u0cce\u0001\u0000\u0000\u0000\u0ccf\u0cd0"+
55436 		"\u0001\u0000\u0000\u0000\u0cd0\u0cd1\u0001\u0000\u0000\u0000\u0cd1\u0cd2"+
55437 		"\u0005 \u0000\u0000\u0cd2\u01df\u0001\u0000\u0000\u0000\u0cd3\u0cd5\u0005"+
55438 		"%\u0000\u0000\u0cd4\u0cd3\u0001\u0000\u0000\u0000\u0cd4\u0cd5\u0001\u0000"+
55439 		"\u0000\u0000\u0cd5\u0cd6\u0001\u0000\u0000\u0000\u0cd6\u0cd7\u0005\u0198"+
55440 		"\u0000\u0000\u0cd7\u0cd8\u0005\u0018\u0000\u0000\u0cd8\u0cd9\u0003\u01cc"+
55441 		"\u00e6\u0000\u0cd9\u01e1\u0001\u0000\u0000\u0000\u0cda\u0cdc\u0005%\u0000"+
55442 		"\u0000\u0cdb\u0cda\u0001\u0000\u0000\u0000\u0cdb\u0cdc\u0001\u0000\u0000"+
55443 		"\u0000\u0cdc\u0cdd\u0001\u0000\u0000\u0000\u0cdd\u0cde\u0005\u01b2\u0000"+
55444 		"\u0000\u0cde\u0cdf\u0005\u0018\u0000\u0000\u0cdf\u0ce0\u0003\u01e4\u00f2"+
55445 		"\u0000\u0ce0\u01e3\u0001\u0000\u0000\u0000\u0ce1\u0ce5\u0005\u0121\u0000"+
55446 		"\u0000\u0ce2\u0ce3\u0005\u02cb\u0000\u0000\u0ce3\u0ce5\u0007*\u0000\u0000"+
55447 		"\u0ce4\u0ce1\u0001\u0000\u0000\u0000\u0ce4\u0ce2\u0001\u0000\u0000\u0000"+
55448 		"\u0ce5\u01e5\u0001\u0000\u0000\u0000\u0ce6\u0ce9\u0003\u01e8\u00f4\u0000"+
55449 		"\u0ce7\u0cea\u0003\u01ea\u00f5\u0000\u0ce8\u0cea\u0003\u01ee\u00f7\u0000"+
55450 		"\u0ce9\u0ce7\u0001\u0000\u0000\u0000\u0ce9\u0ce8\u0001\u0000\u0000\u0000"+
55451 		"\u0cea\u01e7\u0001\u0000\u0000\u0000\u0ceb\u0cec\u0005>\u0000\u0000\u0cec"+
55452 		"\u0ced\u0003V+\u0000\u0ced\u01e9\u0001\u0000\u0000\u0000\u0cee\u0cf4\u0005"+
55453 		"\u0106\u0000\u0000\u0cef\u0cf5\u0003\u0188\u00c4\u0000\u0cf0\u0cf2\u0003"+
55454 		"R)\u0000\u0cf1\u0cf3\u0003\u01ec\u00f6\u0000\u0cf2\u0cf1\u0001\u0000\u0000"+
55455 		"\u0000\u0cf2\u0cf3\u0001\u0000\u0000\u0000\u0cf3\u0cf5\u0001\u0000\u0000"+
55456 		"\u0000\u0cf4\u0cef\u0001\u0000\u0000\u0000\u0cf4\u0cf0\u0001\u0000\u0000"+
55457 		"\u0000\u0cf5\u01eb\u0001\u0000\u0000\u0000\u0cf6\u0cf7\u0005a\u0000\u0000"+
55458 		"\u0cf7\u0cfa\u0003\u00d4j\u0000\u0cf8\u0cfa\u0005\u009a\u0000\u0000\u0cf9"+
55459 		"\u0cf6\u0001\u0000\u0000\u0000\u0cf9\u0cf8\u0001\u0000\u0000\u0000\u0cfa"+
55460 		"\u01ed\u0001\u0000\u0000\u0000\u0cfb\u0cfc\u0005\u0105\u0000\u0000\u0cfc"+
55461 		"\u0d04\u0005\u0108\u0000\u0000\u0cfd\u0cfe\u0005M\u0000\u0000\u0cfe\u0cff"+
55462 		"\u0005\u0195\u0000\u0000\u0cff\u0d00\u0005\u0018\u0000\u0000\u0d00\u0d02"+
55463 		"\u0005\u02cb\u0000\u0000\u0d01\u0d03\u0005\u010f\u0000\u0000\u0d02\u0d01"+
55464 		"\u0001\u0000\u0000\u0000\u0d02\u0d03\u0001\u0000\u0000\u0000\u0d03\u0d05"+
55465 		"\u0001\u0000\u0000\u0000\u0d04\u0cfd\u0001\u0000\u0000\u0000\u0d04\u0d05"+
55466 		"\u0001\u0000\u0000\u0000\u0d05\u0d07\u0001\u0000\u0000\u0000\u0d06\u0d08"+
55467 		"\u0003\u0172\u00b9\u0000\u0d07\u0d06\u0001\u0000\u0000\u0000\u0d07\u0d08"+
55468 		"\u0001\u0000\u0000\u0000\u0d08\u01ef\u0001\u0000\u0000\u0000\u0d09\u0d0a"+
55469 		"\u0005:\u0000\u0000\u0d0a\u0d0b\u0005\u001f\u0000\u0000\u0d0b\u0d0c\u0005"+
55470 		"\u01b4\u0000\u0000\u0d0c\u0d0d\u0005\u0018\u0000\u0000\u0d0d\u0d0e\u0007"+
55471 		"+\u0000\u0000\u0d0e\u0d1c\u0005 \u0000\u0000\u0d0f\u0d10\u0005\u01a7\u0000"+
55472 		"\u0000\u0d10\u0d11\u0005\u0018\u0000\u0000\u0d11\u0d1c\u0005a\u0000\u0000"+
55473 		"\u0d12\u0d13\u0005\u0114\u0000\u0000\u0d13\u0d14\u0005\u0018\u0000\u0000"+
55474 		"\u0d14\u0d1c\u0007&\u0000\u0000\u0d15\u0d16\u0005\u019b\u0000\u0000\u0d16"+
55475 		"\u0d17\u0005\u0018\u0000\u0000\u0d17\u0d19\u0005a\u0000\u0000\u0d18\u0d1a"+
55476 		"\u0003\u01f2\u00f9\u0000\u0d19\u0d18\u0001\u0000\u0000\u0000\u0d19\u0d1a"+
55477 		"\u0001\u0000\u0000\u0000\u0d1a\u0d1c\u0001\u0000\u0000\u0000\u0d1b\u0d09"+
55478 		"\u0001\u0000\u0000\u0000\u0d1b\u0d0f\u0001\u0000\u0000\u0000\u0d1b\u0d12"+
55479 		"\u0001\u0000\u0000\u0000\u0d1b\u0d15\u0001\u0000\u0000\u0000\u0d1c\u01f1"+
55480 		"\u0001\u0000\u0000\u0000\u0d1d\u0d1e\u0005\u001f\u0000\u0000\u0d1e\u0d1f"+
55481 		"\u0005\u01b3\u0000\u0000\u0d1f\u0d20\u0005\u0018\u0000\u0000\u0d20\u0d25"+
55482 		"\u0003@ \u0000\u0d21\u0d22\u0005%\u0000\u0000\u0d22\u0d23\u0005\u0198"+
55483 		"\u0000\u0000\u0d23\u0d24\u0005\u0018\u0000\u0000\u0d24\u0d26\u0003\u01cc"+
55484 		"\u00e6\u0000\u0d25\u0d21\u0001\u0000\u0000\u0000\u0d25\u0d26\u0001\u0000"+
55485 		"\u0000\u0000\u0d26\u0d27\u0001\u0000\u0000\u0000\u0d27\u0d28\u0005 \u0000"+
55486 		"\u0000\u0d28\u01f3\u0001\u0000\u0000\u0000\u0d29\u0d2a\u0005\u01ef\u0000"+
55487 		"\u0000\u0d2a\u0d2b\u0005\u0018\u0000\u0000\u0d2b\u0d2d\u0007,\u0000\u0000"+
55488 		"\u0d2c\u0d29\u0001\u0000\u0000\u0000\u0d2c\u0d2d\u0001\u0000\u0000\u0000"+
55489 		"\u0d2d\u0d2f\u0001\u0000\u0000\u0000\u0d2e\u0d30\u0003\u01f6\u00fb\u0000"+
55490 		"\u0d2f\u0d2e\u0001\u0000\u0000\u0000\u0d2f\u0d30\u0001\u0000\u0000\u0000"+
55491 		"\u0d30\u0d33\u0001\u0000\u0000\u0000\u0d31\u0d32\u0005\u0107\u0000\u0000"+
55492 		"\u0d32\u0d34\u0003\u00d4j\u0000\u0d33\u0d31\u0001\u0000\u0000\u0000\u0d33"+
55493 		"\u0d34\u0001\u0000\u0000\u0000\u0d34\u0d3e\u0001\u0000\u0000\u0000\u0d35"+
55494 		"\u0d36\u0005M\u0000\u0000\u0d36\u0d3b\u0003\u01f8\u00fc\u0000\u0d37\u0d38"+
55495 		"\u0005%\u0000\u0000\u0d38\u0d3a\u0003\u01f8\u00fc\u0000\u0d39\u0d37\u0001"+
55496 		"\u0000\u0000\u0000\u0d3a\u0d3d\u0001\u0000\u0000\u0000\u0d3b\u0d39\u0001"+
55497 		"\u0000\u0000\u0000\u0d3b\u0d3c\u0001\u0000\u0000\u0000\u0d3c\u0d3f\u0001"+
55498 		"\u0000\u0000\u0000\u0d3d\u0d3b\u0001\u0000\u0000\u0000\u0d3e\u0d35\u0001"+
55499 		"\u0000\u0000\u0000\u0d3e\u0d3f\u0001\u0000\u0000\u0000\u0d3f\u01f5\u0001"+
55500 		"\u0000\u0000\u0000\u0d40\u0d42\u0005a\u0000\u0000\u0d41\u0d43\u0005@\u0000"+
55501 		"\u0000\u0d42\u0d41\u0001\u0000\u0000\u0000\u0d42\u0d43\u0001\u0000\u0000"+
55502 		"\u0000\u0d43\u0d44\u0001\u0000\u0000\u0000\u0d44\u0d49\u0003\u01fc\u00fe"+
55503 		"\u0000\u0d45\u0d46\u0005%\u0000\u0000\u0d46\u0d48\u0003\u01fc\u00fe\u0000"+
55504 		"\u0d47\u0d45\u0001\u0000\u0000\u0000\u0d48\u0d4b\u0001\u0000\u0000\u0000"+
55505 		"\u0d49\u0d47\u0001\u0000\u0000\u0000\u0d49\u0d4a\u0001\u0000\u0000\u0000"+
55506 		"\u0d4a\u0d50\u0001\u0000\u0000\u0000\u0d4b\u0d49\u0001\u0000\u0000\u0000"+
55507 		"\u0d4c\u0d4d\u0005%\u0000\u0000\u0d4d\u0d4f\u0003\u0200\u0100\u0000\u0d4e"+
55508 		"\u0d4c\u0001\u0000\u0000\u0000\u0d4f\u0d52\u0001\u0000\u0000\u0000\u0d50"+
55509 		"\u0d4e\u0001\u0000\u0000\u0000\u0d50\u0d51\u0001\u0000\u0000\u0000\u0d51"+
55510 		"\u0d53\u0001\u0000\u0000\u0000\u0d52\u0d50\u0001\u0000\u0000\u0000\u0d53"+
55511 		"\u0d54\u0003\u0204\u0102\u0000\u0d54\u01f7\u0001\u0000\u0000\u0000\u0d55"+
55512 		"\u0d56\u0005\u0117\u0000\u0000\u0d56\u0d5b\u0003\u01fa\u00fd\u0000\u0d57"+
55513 		"\u0d58\u0005%\u0000\u0000\u0d58\u0d5a\u0003\u01fa\u00fd\u0000\u0d59\u0d57"+
55514 		"\u0001\u0000\u0000\u0000\u0d5a\u0d5d\u0001\u0000\u0000\u0000\u0d5b\u0d59"+
55515 		"\u0001\u0000\u0000\u0000\u0d5b\u0d5c\u0001\u0000\u0000\u0000\u0d5c\u0d78"+
55516 		"\u0001\u0000\u0000\u0000\u0d5d\u0d5b\u0001\u0000\u0000\u0000\u0d5e\u0d5f"+
55517 		"\u0005\u0289\u0000\u0000\u0d5f\u0d60\u0005\u0018\u0000\u0000\u0d60\u0d78"+
55518 		"\u0003\u00d4j\u0000\u0d61\u0d62\u0005\u028a\u0000\u0000\u0d62\u0d63\u0005"+
55519 		"\u0018\u0000\u0000\u0d63\u0d78\u0003\u00d4j\u0000\u0d64\u0d65\u0005\u028c"+
55520 		"\u0000\u0000\u0d65\u0d66\u0005\u0018\u0000\u0000\u0d66\u0d78\u0007\u0000"+
55521 		"\u0000\u0000\u0d67\u0d68\u0005\u028d\u0000\u0000\u0d68\u0d69\u0005\u0018"+
55522 		"\u0000\u0000\u0d69\u0d78\u0007\u0000\u0000\u0000\u0d6a\u0d6b\u0005\u028e"+
55523 		"\u0000\u0000\u0d6b\u0d6c\u0005\u0018\u0000\u0000\u0d6c\u0d78\u0003\u00d4"+
55524 		"j\u0000\u0d6d\u0d6e\u0005\u01fe\u0000\u0000\u0d6e\u0d78\u0007\u0000\u0000"+
55525 		"\u0000\u0d6f\u0d70\u0005\u01ff\u0000\u0000\u0d70\u0d78\u0007\u0000\u0000"+
55526 		"\u0000\u0d71\u0d72\u0005\u028f\u0000\u0000\u0d72\u0d73\u0005\u0018\u0000"+
55527 		"\u0000\u0d73\u0d74\u0005a\u0000\u0000\u0d74\u0d75\u0005\u0290\u0000\u0000"+
55528 		"\u0d75\u0d76\u0005\u0018\u0000\u0000\u0d76\u0d78\u0003\u00d4j\u0000\u0d77"+
55529 		"\u0d55\u0001\u0000\u0000\u0000\u0d77\u0d5e\u0001\u0000\u0000\u0000\u0d77"+
55530 		"\u0d61\u0001\u0000\u0000\u0000\u0d77\u0d64\u0001\u0000\u0000\u0000\u0d77"+
55531 		"\u0d67\u0001\u0000\u0000\u0000\u0d77\u0d6a\u0001\u0000\u0000\u0000\u0d77"+
55532 		"\u0d6d\u0001\u0000\u0000\u0000\u0d77\u0d6f\u0001\u0000\u0000\u0000\u0d77"+
55533 		"\u0d71\u0001\u0000\u0000\u0000\u0d78\u01f9\u0001\u0000\u0000\u0000\u0d79"+
55534 		"\u0d7a\u0005\u01fd\u0000\u0000\u0d7a\u0d7b\u0005\u0018\u0000\u0000\u0d7b"+
55535 		"\u0d80\u0007-\u0000\u0000\u0d7c\u0d7d\u0005\u0290\u0000\u0000\u0d7d\u0d7e"+
55536 		"\u0005\u0018\u0000\u0000\u0d7e\u0d80\u0003\u00d4j\u0000\u0d7f\u0d79\u0001"+
55537 		"\u0000\u0000\u0000\u0d7f\u0d7c\u0001\u0000\u0000\u0000\u0d80\u01fb\u0001"+
55538 		"\u0000\u0000\u0000\u0d81\u0d82\u0005\u001f\u0000\u0000\u0d82\u0d83\u0005"+
55539 		"\u00aa\u0000\u0000\u0d83\u0d84\u0005\u0018\u0000\u0000\u0d84\u0d85\u0003"+
55540 		"\u00d4j\u0000\u0d85\u0d86\u0005%\u0000\u0000\u0d86\u0d87\u0005\u01f1\u0000"+
55541 		"\u0000\u0d87\u0d88\u0005\u0018\u0000\u0000\u0d88\u0d89\u0005\u02ca\u0000"+
55542 		"\u0000\u0d89\u0d8a\u0003\u01fe\u00ff\u0000\u0d8a\u0d8b\u0005 \u0000\u0000"+
55543 		"\u0d8b\u01fd\u0001\u0000\u0000\u0000\u0d8c\u0d8d\u0005%\u0000\u0000\u0d8d"+
55544 		"\u0d8e\u0005\u01f2\u0000\u0000\u0d8e\u0d8f\u0005\u0018\u0000\u0000\u0d8f"+
55545 		"\u0d91\u0003\u001e\u000f\u0000\u0d90\u0d92\u0007.\u0000\u0000\u0d91\u0d90"+
55546 		"\u0001\u0000\u0000\u0000\u0d91\u0d92\u0001\u0000\u0000\u0000\u0d92\u0d94"+
55547 		"\u0001\u0000\u0000\u0000\u0d93\u0d8c\u0001\u0000\u0000\u0000\u0d93\u0d94"+
55548 		"\u0001\u0000\u0000\u0000\u0d94\u0d9f\u0001\u0000\u0000\u0000\u0d95\u0d96"+
55549 		"\u0005%\u0000\u0000\u0d96\u0d97\u0005\u01f3\u0000\u0000\u0d97\u0d9d\u0005"+
55550 		"\u0018\u0000\u0000\u0d98\u0d9a\u0003\u001e\u000f\u0000\u0d99\u0d9b\u0007"+
55551 		".\u0000\u0000\u0d9a\u0d99\u0001\u0000\u0000\u0000\u0d9a\u0d9b\u0001\u0000"+
55552 		"\u0000\u0000\u0d9b\u0d9e\u0001\u0000\u0000\u0000\u0d9c\u0d9e\u0005\u01f5"+
55553 		"\u0000\u0000\u0d9d\u0d98\u0001\u0000\u0000\u0000\u0d9d\u0d9c\u0001\u0000"+
55554 		"\u0000\u0000\u0d9e\u0da0\u0001\u0000\u0000\u0000\u0d9f\u0d95\u0001\u0000"+
55555 		"\u0000\u0000\u0d9f\u0da0\u0001\u0000\u0000\u0000\u0da0\u0da8\u0001\u0000"+
55556 		"\u0000\u0000\u0da1\u0da2\u0005%\u0000\u0000\u0da2\u0da3\u0005\u01f4\u0000"+
55557 		"\u0000\u0da3\u0da4\u0005\u0018\u0000\u0000\u0da4\u0da6\u0003\u001e\u000f"+
55558 		"\u0000\u0da5\u0da7\u0007/\u0000\u0000\u0da6\u0da5\u0001\u0000\u0000\u0000"+
55559 		"\u0da6\u0da7\u0001\u0000\u0000\u0000\u0da7\u0da9\u0001\u0000\u0000\u0000"+
55560 		"\u0da8\u0da1\u0001\u0000\u0000\u0000\u0da8\u0da9\u0001\u0000\u0000\u0000"+
55561 		"\u0da9\u01ff\u0001\u0000\u0000\u0000\u0daa\u0dab\u0005\u01fc\u0000\u0000"+
55562 		"\u0dab\u0dad\u0003\u00d4j\u0000\u0dac\u0dae\u0003\u0202\u0101\u0000\u0dad"+
55563 		"\u0dac\u0001\u0000\u0000\u0000\u0dad\u0dae\u0001\u0000\u0000\u0000\u0dae"+
55564 		"\u0daf\u0001\u0000\u0000\u0000\u0daf\u0db4\u0003\u01fc\u00fe\u0000\u0db0"+
55565 		"\u0db1\u0005%\u0000\u0000\u0db1\u0db3\u0003\u01fc\u00fe\u0000\u0db2\u0db0"+
55566 		"\u0001\u0000\u0000\u0000\u0db3\u0db6\u0001\u0000\u0000\u0000\u0db4\u0db2"+
55567 		"\u0001\u0000\u0000\u0000\u0db4\u0db5\u0001\u0000\u0000\u0000\u0db5\u0201"+
55568 		"\u0001\u0000\u0000\u0000\u0db6\u0db4\u0001\u0000\u0000\u0000\u0db7\u0db8"+
55569 		"\u0005\u01fa\u0000\u0000\u0db8\u0dba\u0005\u0117\u0000\u0000\u0db9\u0db7"+
55570 		"\u0001\u0000\u0000\u0000\u0db9\u0dba\u0001\u0000\u0000\u0000\u0dba\u0dbc"+
55571 		"\u0001\u0000\u0000\u0000\u0dbb\u0dbd\u0005\u009a\u0000\u0000\u0dbc\u0dbb"+
55572 		"\u0001\u0000\u0000\u0000\u0dbc\u0dbd\u0001\u0000\u0000\u0000\u0dbd\u0dc1"+
55573 		"\u0001\u0000\u0000\u0000\u0dbe\u0dbf\u0005\u01fa\u0000\u0000\u0dbf\u0dc1"+
55574 		"\u0005\u01fb\u0000\u0000\u0dc0\u0db9\u0001\u0000\u0000\u0000\u0dc0\u0dbe"+
55575 		"\u0001\u0000\u0000\u0000\u0dc1\u0203\u0001\u0000\u0000\u0000\u0dc2\u0dc3"+
55576 		"\u0005\u0186\u0000\u0000\u0dc3\u0dc4\u0005a\u0000\u0000\u0dc4\u0dc9\u0003"+
55577 		"\u01fc\u00fe\u0000\u0dc5\u0dc6\u0005%\u0000\u0000\u0dc6\u0dc8\u0003\u01fc"+
55578 		"\u00fe\u0000\u0dc7\u0dc5\u0001\u0000\u0000\u0000\u0dc8\u0dcb\u0001\u0000"+
55579 		"\u0000\u0000\u0dc9\u0dc7\u0001\u0000\u0000\u0000\u0dc9\u0dca\u0001\u0000"+
55580 		"\u0000\u0000\u0dca\u0dcd\u0001\u0000\u0000\u0000\u0dcb\u0dc9\u0001\u0000"+
55581 		"\u0000\u0000\u0dcc\u0dc2\u0001\u0000\u0000\u0000\u0dcc\u0dcd\u0001\u0000"+
55582 		"\u0000\u0000\u0dcd\u0205\u0001\u0000\u0000\u0000\u0dce\u0dd8\u0005\u00cd"+
55583 		"\u0000\u0000\u0dcf\u0dd4\u0003\u0208\u0104\u0000\u0dd0\u0dd1\u0005%\u0000"+
55584 		"\u0000\u0dd1\u0dd3\u0003\u0208\u0104\u0000\u0dd2\u0dd0\u0001\u0000\u0000"+
55585 		"\u0000\u0dd3\u0dd6\u0001\u0000\u0000\u0000\u0dd4\u0dd2\u0001\u0000\u0000"+
55586 		"\u0000\u0dd4\u0dd5\u0001\u0000\u0000\u0000\u0dd5\u0dd9\u0001\u0000\u0000"+
55587 		"\u0000\u0dd6\u0dd4\u0001\u0000\u0000\u0000\u0dd7\u0dd9\u0003\u020a\u0105"+
55588 		"\u0000\u0dd8\u0dcf\u0001\u0000\u0000\u0000\u0dd8\u0dd7\u0001\u0000\u0000"+
55589 		"\u0000\u0dd9\u0207\u0001\u0000\u0000\u0000\u0dda\u0ddc\u0003\u00dam\u0000"+
55590 		"\u0ddb\u0ddd\u0005`\u0000\u0000\u0ddc\u0ddb\u0001\u0000\u0000\u0000\u0ddc"+
55591 		"\u0ddd\u0001\u0000\u0000\u0000\u0ddd\u0dde\u0001\u0000\u0000\u0000\u0dde"+
55592 		"\u0de1\u0003\u009eO\u0000\u0ddf\u0de0\u0005\u0018\u0000\u0000\u0de0\u0de2"+
55593 		"\u0003t:\u0000\u0de1\u0ddf\u0001\u0000\u0000\u0000\u0de1\u0de2\u0001\u0000"+
55594 		"\u0000\u0000\u0de2\u0de7\u0001\u0000\u0000\u0000\u0de3\u0de4\u0003\u00da"+
55595 		"m\u0000\u0de4\u0de5\u0005\u00ce\u0000\u0000\u0de5\u0de7\u0001\u0000\u0000"+
55596 		"\u0000\u0de6\u0dda\u0001\u0000\u0000\u0000\u0de6\u0de3\u0001\u0000\u0000"+
55597 		"\u0000\u0de7\u0209\u0001\u0000\u0000\u0000\u0de8\u0dea\u0003\u00dam\u0000"+
55598 		"\u0de9\u0deb\u0005`\u0000\u0000\u0dea\u0de9\u0001\u0000\u0000\u0000\u0dea"+
55599 		"\u0deb\u0001\u0000\u0000\u0000\u0deb\u0dec\u0001\u0000\u0000\u0000\u0dec"+
55600 		"\u0ded\u0003\u020c\u0106\u0000\u0ded\u020b\u0001\u0000\u0000\u0000\u0dee"+
55601 		"\u0def\u0005;\u0000\u0000\u0def\u0df0\u0005\u001f\u0000\u0000\u0df0\u0df5"+
55602 		"\u0003\u020e\u0107\u0000\u0df1\u0df2\u0005%\u0000\u0000\u0df2\u0df4\u0003"+
55603 		"\u020e\u0107\u0000\u0df3\u0df1\u0001\u0000\u0000\u0000\u0df4\u0df7\u0001"+
55604 		"\u0000\u0000\u0000\u0df5\u0df3\u0001\u0000\u0000\u0000\u0df5\u0df6\u0001"+
55605 		"\u0000\u0000\u0000\u0df6\u0df8\u0001\u0000\u0000\u0000\u0df7\u0df5\u0001"+
55606 		"\u0000\u0000\u0000\u0df8\u0df9\u0005 \u0000\u0000\u0df9\u020d\u0001\u0000"+
55607 		"\u0000\u0000\u0dfa\u0dfd\u0003\u0210\u0108\u0000\u0dfb\u0dfd\u0003\u0214"+
55608 		"\u010a\u0000\u0dfc\u0dfa\u0001\u0000\u0000\u0000\u0dfc\u0dfb\u0001\u0000"+
55609 		"\u0000\u0000\u0dfd\u020f\u0001\u0000\u0000\u0000\u0dfe\u0e02\u0003H$\u0000"+
55610 		"\u0dff\u0e03\u0003\u00a0P\u0000\u0e00\u0e01\u0005`\u0000\u0000\u0e01\u0e03"+
55611 		"\u0003b1\u0000\u0e02\u0dff\u0001\u0000\u0000\u0000\u0e02\u0e00\u0001\u0000"+
55612 		"\u0000\u0000\u0e03\u0e06\u0001\u0000\u0000\u0000\u0e04\u0e05\u0005\u0107"+
55613 		"\u0000\u0000\u0e05\u0e07\u0003Z-\u0000\u0e06\u0e04\u0001\u0000\u0000\u0000"+
55614 		"\u0e06\u0e07\u0001\u0000\u0000\u0000\u0e07\u0e14\u0001\u0000\u0000\u0000"+
55615 		"\u0e08\u0e09\u0005\u009a\u0000\u0000\u0e09\u0e0b\u0003b1\u0000\u0e0a\u0e08"+
55616 		"\u0001\u0000\u0000\u0000\u0e0a\u0e0b\u0001\u0000\u0000\u0000\u0e0b\u0e15"+
55617 		"\u0001\u0000\u0000\u0000\u0e0c\u0e12\u0005\u011d\u0000\u0000\u0e0d\u0e0e"+
55618 		"\u0005\u001f\u0000\u0000\u0e0e\u0e0f\u0005\u02cb\u0000\u0000\u0e0f\u0e10"+
55619 		"\u0005%\u0000\u0000\u0e10\u0e11\u0005\u02cb\u0000\u0000\u0e11\u0e13\u0005"+
55620 		" \u0000\u0000\u0e12\u0e0d\u0001\u0000\u0000\u0000\u0e12\u0e13\u0001\u0000"+
55621 		"\u0000\u0000\u0e13\u0e15\u0001\u0000\u0000\u0000\u0e14\u0e0a\u0001\u0000"+
55622 		"\u0000\u0000\u0e14\u0e0c\u0001\u0000\u0000\u0000\u0e15\u0e17\u0001\u0000"+
55623 		"\u0000\u0000\u0e16\u0e18\u0005\u0136\u0000\u0000\u0e17\u0e16\u0001\u0000"+
55624 		"\u0000\u0000\u0e17\u0e18\u0001\u0000\u0000\u0000\u0e18\u0e19\u0001\u0000"+
55625 		"\u0000\u0000\u0e19\u0e1a\u0003\u0212\u0109\u0000\u0e1a\u0211\u0001\u0000"+
55626 		"\u0000\u0000\u0e1b\u0e1f\u0005l\u0000\u0000\u0e1c\u0e1d\u0005k\u0000\u0000"+
55627 		"\u0e1d\u0e1f\u0005l\u0000\u0000\u0e1e\u0e1b\u0001\u0000\u0000\u0000\u0e1e"+
55628 		"\u0e1c\u0001\u0000\u0000\u0000\u0e1e\u0e1f\u0001\u0000\u0000\u0000\u0e1f"+
55629 		"\u0e2d\u0001\u0000\u0000\u0000\u0e20\u0e21\u0005@\u0000\u0000\u0e21\u0e24"+
55630 		"\u0005C\u0000\u0000\u0e22\u0e24\u0005A\u0000\u0000\u0e23\u0e20\u0001\u0000"+
55631 		"\u0000\u0000\u0e23\u0e22\u0001\u0000\u0000\u0000\u0e23\u0e24\u0001\u0000"+
55632 		"\u0000\u0000\u0e24\u0e2d\u0001\u0000\u0000\u0000\u0e25\u0e26\u0005\u00f7"+
55633 		"\u0000\u0000\u0e26\u0e27\u0005\u001f\u0000\u0000\u0e27\u0e28\u0003b1\u0000"+
55634 		"\u0e28\u0e29\u0005 \u0000\u0000\u0e29\u0e2d\u0001\u0000\u0000\u0000\u0e2a"+
55635 		"\u0e2b\u0005M\u0000\u0000\u0e2b\u0e2d\u0003\u00bc^\u0000\u0e2c\u0e1e\u0001"+
55636 		"\u0000\u0000\u0000\u0e2c\u0e23\u0001\u0000\u0000\u0000\u0e2c\u0e25\u0001"+
55637 		"\u0000\u0000\u0000\u0e2c\u0e2a\u0001\u0000\u0000\u0000\u0e2d\u0213\u0001"+
55638 		"\u0000\u0000\u0000\u0e2e\u0e2f\u0005@\u0000\u0000\u0e2f\u0e32\u0005C\u0000"+
55639 		"\u0000\u0e30\u0e32\u0005A\u0000\u0000\u0e31\u0e2e\u0001\u0000\u0000\u0000"+
55640 		"\u0e31\u0e30\u0001\u0000\u0000\u0000\u0e32\u0e33\u0001\u0000\u0000\u0000"+
55641 		"\u0e33\u0e34\u0005\u001f\u0000\u0000\u0e34\u0e39\u0003H$\u0000\u0e35\u0e36"+
55642 		"\u0005%\u0000\u0000\u0e36\u0e38\u0003H$\u0000\u0e37\u0e35\u0001\u0000"+
55643 		"\u0000\u0000\u0e38\u0e3b\u0001\u0000\u0000\u0000\u0e39\u0e37\u0001\u0000"+
55644 		"\u0000\u0000\u0e39\u0e3a\u0001\u0000\u0000\u0000\u0e3a\u0e3c\u0001\u0000"+
55645 		"\u0000\u0000\u0e3b\u0e39\u0001\u0000\u0000\u0000\u0e3c\u0e3d\u0005 \u0000"+
55646 		"\u0000\u0e3d\u0e41\u0001\u0000\u0000\u0000\u0e3e\u0e3f\u0005\u00f7\u0000"+
55647 		"\u0000\u0e3f\u0e41\u0003b1\u0000\u0e40\u0e31\u0001\u0000\u0000\u0000\u0e40"+
55648 		"\u0e3e\u0001\u0000\u0000\u0000\u0e41\u0215\u0001\u0000\u0000\u0000\u0e42"+
55649 		"\u0e43\u0005:\u0000\u0000\u0e43\u0e44\u0003\u00dam\u0000\u0e44\u0e45\u0003"+
55650 		"\u0218\u010c\u0000\u0e45\u0217\u0001\u0000\u0000\u0000\u0e46\u0e47\u0005"+
55651 		"\u0014\u0000\u0000\u0e47\u0e49\u0003*\u0015\u0000\u0e48\u0e46\u0001\u0000"+
55652 		"\u0000\u0000\u0e48\u0e49\u0001\u0000\u0000\u0000\u0e49\u0e4a\u0001\u0000"+
55653 		"\u0000\u0000\u0e4a\u0e51\u0005\u0018\u0000\u0000\u0e4b\u0e52\u0003b1\u0000"+
55654 		"\u0e4c\u0e4d\u0003*\u0015\u0000\u0e4d\u0e4e\u0005\u0014\u0000\u0000\u0e4e"+
55655 		"\u0e4f\u0003*\u0015\u0000\u0e4f\u0e52\u0001\u0000\u0000\u0000\u0e50\u0e52"+
55656 		"\u0005\u02d1\u0000\u0000\u0e51\u0e4b\u0001\u0000\u0000\u0000\u0e51\u0e4c"+
55657 		"\u0001\u0000\u0000\u0000\u0e51\u0e50\u0001\u0000\u0000\u0000\u0e52\u0e5e"+
55658 		"\u0001\u0000\u0000\u0000\u0e53\u0e54\u0003\u021e\u010f\u0000\u0e54\u0e55"+
55659 		"\u0003b1\u0000\u0e55\u0e5e\u0001\u0000\u0000\u0000\u0e56\u0e57\u0005\u0018"+
55660 		"\u0000\u0000\u0e57\u0e5e\u0003\u021a\u010d\u0000\u0e58\u0e59\u0005\u0018"+
55661 		"\u0000\u0000\u0e59\u0e5a\u0005\u001f\u0000\u0000\u0e5a\u0e5b\u0003\u02ca"+
55662 		"\u0165\u0000\u0e5b\u0e5c\u0005 \u0000\u0000\u0e5c\u0e5e\u0001\u0000\u0000"+
55663 		"\u0000\u0e5d\u0e48\u0001\u0000\u0000\u0000\u0e5d\u0e53\u0001\u0000\u0000"+
55664 		"\u0000\u0e5d\u0e56\u0001\u0000\u0000\u0000\u0e5d\u0e58\u0001\u0000\u0000"+
55665 		"\u0000\u0e5e\u0219\u0001\u0000\u0000\u0000\u0e5f\u0e73\u0003\u00dam\u0000"+
55666 		"\u0e60\u0e61\u0005\u00ce\u0000\u0000\u0e61\u0e62\u0003\u021c\u010e\u0000"+
55667 		"\u0e62\u0e63\u0005f\u0000\u0000\u0e63\u0e64\u0003\u02ca\u0165\u0000\u0e64"+
55668 		"\u0e70\u0005f\u0000\u0000\u0e65\u0e71\u0005\u00cb\u0000\u0000\u0e66\u0e67"+
55669 		"\u00050\u0000\u0000\u0e67\u0e68\u0005\u00cf\u0000\u0000\u0e68\u0e6d\u0003"+
55670 		"N\'\u0000\u0e69\u0e6a\u0005%\u0000\u0000\u0e6a\u0e6c\u0003N\'\u0000\u0e6b"+
55671 		"\u0e69\u0001\u0000\u0000\u0000\u0e6c\u0e6f\u0001\u0000\u0000\u0000\u0e6d"+
55672 		"\u0e6b\u0001\u0000\u0000\u0000\u0e6d\u0e6e\u0001\u0000\u0000\u0000\u0e6e"+
55673 		"\u0e71\u0001\u0000\u0000\u0000\u0e6f\u0e6d\u0001\u0000\u0000\u0000\u0e70"+
55674 		"\u0e65\u0001\u0000\u0000\u0000\u0e70\u0e66\u0001\u0000\u0000\u0000\u0e71"+
55675 		"\u0e73\u0001\u0000\u0000\u0000\u0e72\u0e5f\u0001\u0000\u0000\u0000\u0e72"+
55676 		"\u0e60\u0001\u0000\u0000\u0000\u0e73\u021b\u0001\u0000\u0000\u0000\u0e74"+
55677 		"\u0e76\u00070\u0000\u0000\u0e75\u0e74\u0001\u0000\u0000\u0000\u0e75\u0e76"+
55678 		"\u0001\u0000\u0000\u0000\u0e76\u0e78\u0001\u0000\u0000\u0000\u0e77\u0e79"+
55679 		"\u00071\u0000\u0000\u0e78\u0e77\u0001\u0000\u0000\u0000\u0e78\u0e79\u0001"+
55680 		"\u0000\u0000\u0000\u0e79\u0e7b\u0001\u0000\u0000\u0000\u0e7a\u0e7c\u0007"+
55681 		"2\u0000\u0000\u0e7b\u0e7a\u0001\u0000\u0000\u0000\u0e7b\u0e7c\u0001\u0000"+
55682 		"\u0000\u0000\u0e7c\u0e7e\u0001\u0000\u0000\u0000\u0e7d\u0e7f\u0005\u0208"+
55683 		"\u0000\u0000\u0e7e\u0e7d\u0001\u0000\u0000\u0000\u0e7e\u0e7f\u0001\u0000"+
55684 		"\u0000\u0000\u0e7f\u021d\u0001\u0000\u0000\u0000\u0e80\u0e81\u0005\u000f"+
55685 		"\u0000\u0000\u0e81\u0e91\u0005\u0018\u0000\u0000\u0e82\u0e83\u0005\u0010"+
55686 		"\u0000\u0000\u0e83\u0e91\u0005\u0018\u0000\u0000\u0e84\u0e85\u0005\u0011"+
55687 		"\u0000\u0000\u0e85\u0e91\u0005\u0018\u0000\u0000\u0e86\u0e87\u0005\u0012"+
55688 		"\u0000\u0000\u0e87\u0e91\u0005\u0018\u0000\u0000\u0e88\u0e89\u0005\r\u0000"+
55689 		"\u0000\u0e89\u0e91\u0005\u0018\u0000\u0000\u0e8a\u0e8b\u0005\t\u0000\u0000"+
55690 		"\u0e8b\u0e91\u0005\u0018\u0000\u0000\u0e8c\u0e8d\u0005\f\u0000\u0000\u0e8d"+
55691 		"\u0e91\u0005\u0018\u0000\u0000\u0e8e\u0e8f\u0005\b\u0000\u0000\u0e8f\u0e91"+
55692 		"\u0005\u0018\u0000\u0000\u0e90\u0e80\u0001\u0000\u0000\u0000\u0e90\u0e82"+
55693 		"\u0001\u0000\u0000\u0000\u0e90\u0e84\u0001\u0000\u0000\u0000\u0e90\u0e86"+
55694 		"\u0001\u0000\u0000\u0000\u0e90\u0e88\u0001\u0000\u0000\u0000\u0e90\u0e8a"+
55695 		"\u0001\u0000\u0000\u0000\u0e90\u0e8c\u0001\u0000\u0000\u0000\u0e90\u0e8e"+
55696 		"\u0001\u0000\u0000\u0000\u0e91\u021f\u0001\u0000\u0000\u0000\u0e92\u0ea6"+
55697 		"\u0005\u001f\u0000\u0000\u0e93\u0e95\u0003\u00dam\u0000\u0e94\u0e96\u0005"+
55698 		"`\u0000\u0000\u0e95\u0e94\u0001\u0000\u0000\u0000\u0e95\u0e96\u0001\u0000"+
55699 		"\u0000\u0000\u0e96\u0e9a\u0001\u0000\u0000\u0000\u0e97\u0e98\u0003L&\u0000"+
55700 		"\u0e98\u0e99\u0005\u0014\u0000\u0000\u0e99\u0e9b\u0001\u0000\u0000\u0000"+
55701 		"\u0e9a\u0e97\u0001\u0000\u0000\u0000\u0e9a\u0e9b\u0001\u0000\u0000\u0000"+
55702 		"\u0e9b\u0e9c\u0001\u0000\u0000\u0000\u0e9c\u0e9f\u0003\u009eO\u0000\u0e9d"+
55703 		"\u0e9e\u0005\u0018\u0000\u0000\u0e9e\u0ea0\u0003\u00d4j\u0000\u0e9f\u0e9d"+
55704 		"\u0001\u0000\u0000\u0000\u0e9f\u0ea0\u0001\u0000\u0000\u0000\u0ea0\u0ea2"+
55705 		"\u0001\u0000\u0000\u0000\u0ea1\u0ea3\u0005\u00d3\u0000\u0000\u0ea2\u0ea1"+
55706 		"\u0001\u0000\u0000\u0000\u0ea2\u0ea3\u0001\u0000\u0000\u0000\u0ea3\u0ea5"+
55707 		"\u0001\u0000\u0000\u0000\u0ea4\u0e93\u0001\u0000\u0000\u0000\u0ea5\u0ea8"+
55708 		"\u0001\u0000\u0000\u0000\u0ea6\u0ea4\u0001\u0000\u0000\u0000\u0ea6\u0ea7"+
55709 		"\u0001\u0000\u0000\u0000\u0ea7\u0ea9\u0001\u0000\u0000\u0000\u0ea8\u0ea6"+
55710 		"\u0001\u0000\u0000\u0000\u0ea9\u0eaa\u0005 \u0000\u0000\u0eaa\u0221\u0001"+
55711 		"\u0000\u0000\u0000\u0eab\u0eaf\u0003\u0228\u0114\u0000\u0eac\u0eaf\u0003"+
55712 		"\u0226\u0113\u0000\u0ead\u0eaf\u0003\u0224\u0112\u0000\u0eae\u0eab\u0001"+
55713 		"\u0000\u0000\u0000\u0eae\u0eac\u0001\u0000\u0000\u0000\u0eae\u0ead\u0001"+
55714 		"\u0000\u0000\u0000\u0eaf\u0223\u0001\u0000\u0000\u0000\u0eb0\u0eb1\u0005"+
55715 		"\u00d0\u0000\u0000\u0eb1\u0eb2\u0003\u00dam\u0000\u0eb2\u0eb3\u0005;\u0000"+
55716 		"\u0000\u0eb3\u0ebd\u0003\u0140\u00a0\u0000\u0eb4\u0eb5\u0005M\u0000\u0000"+
55717 		"\u0eb5\u0eba\u0003\u022e\u0117\u0000\u0eb6\u0eb7\u0005%\u0000\u0000\u0eb7"+
55718 		"\u0eb9\u0003\u022e\u0117\u0000\u0eb8\u0eb6\u0001\u0000\u0000\u0000\u0eb9"+
55719 		"\u0ebc\u0001\u0000\u0000\u0000\u0eba\u0eb8\u0001\u0000\u0000\u0000\u0eba"+
55720 		"\u0ebb\u0001\u0000\u0000\u0000\u0ebb\u0ebe\u0001\u0000\u0000\u0000\u0ebc"+
55721 		"\u0eba\u0001\u0000\u0000\u0000\u0ebd\u0eb4\u0001\u0000\u0000\u0000\u0ebd"+
55722 		"\u0ebe\u0001\u0000\u0000\u0000\u0ebe\u0ec0\u0001\u0000\u0000\u0000\u0ebf"+
55723 		"\u0ec1\u0005`\u0000\u0000\u0ec0\u0ebf\u0001\u0000\u0000\u0000\u0ec0\u0ec1"+
55724 		"\u0001\u0000\u0000\u0000\u0ec1\u0ec2\u0001\u0000\u0000\u0000\u0ec2\u0ec3"+
55725 		"\u0005}\u0000\u0000\u0ec3\u0ec4\u0003\u022c\u0116\u0000\u0ec4\u0ec5\u0005"+
55726 		"\u00d2\u0000\u0000\u0ec5\u0ec6\u0005\u0116\u0000\u0000\u0ec6\u0225\u0001"+
55727 		"\u0000\u0000\u0000\u0ec7\u0ec8\u0005\u00d0\u0000\u0000\u0ec8\u0ed2\u0005"+
55728 		";\u0000\u0000\u0ec9\u0eca\u0005M\u0000\u0000\u0eca\u0ecf\u0003\u022e\u0117"+
55729 		"\u0000\u0ecb\u0ecc\u0005%\u0000\u0000\u0ecc\u0ece\u0003\u022e\u0117\u0000"+
55730 		"\u0ecd\u0ecb\u0001\u0000\u0000\u0000\u0ece\u0ed1\u0001\u0000\u0000\u0000"+
55731 		"\u0ecf\u0ecd\u0001\u0000\u0000\u0000\u0ecf\u0ed0\u0001\u0000\u0000\u0000"+
55732 		"\u0ed0\u0ed3\u0001\u0000\u0000\u0000\u0ed1\u0ecf\u0001\u0000\u0000\u0000"+
55733 		"\u0ed2\u0ec9\u0001\u0000\u0000\u0000\u0ed2\u0ed3\u0001\u0000\u0000\u0000"+
55734 		"\u0ed3\u0ed5\u0001\u0000\u0000\u0000\u0ed4\u0ed6\u0005`\u0000\u0000\u0ed5"+
55735 		"\u0ed4\u0001\u0000\u0000\u0000\u0ed5\u0ed6\u0001\u0000\u0000\u0000\u0ed6"+
55736 		"\u0ed7\u0001\u0000\u0000\u0000\u0ed7\u0ed9\u0005\u00d2\u0000\u0000\u0ed8"+
55737 		"\u0eda\u0005\u001f\u0000\u0000\u0ed9\u0ed8\u0001\u0000\u0000\u0000\u0ed9"+
55738 		"\u0eda\u0001\u0000\u0000\u0000\u0eda\u0edb\u0001\u0000\u0000\u0000\u0edb"+
55739 		"\u0edd\u0003\u02ca\u0165\u0000\u0edc\u0ede\u0005 \u0000\u0000\u0edd\u0edc"+
55740 		"\u0001\u0000\u0000\u0000\u0edd\u0ede\u0001\u0000\u0000\u0000\u0ede\u0227"+
55741 		"\u0001\u0000\u0000\u0000\u0edf\u0ee0\u0005\u00d0\u0000\u0000\u0ee0\u0eea"+
55742 		"\u0003\u009eO\u0000\u0ee1\u0ee2\u0005M\u0000\u0000\u0ee2\u0ee7\u0003\u022e"+
55743 		"\u0117\u0000\u0ee3\u0ee4\u0005%\u0000\u0000\u0ee4\u0ee6\u0003\u022e\u0117"+
55744 		"\u0000\u0ee5\u0ee3\u0001\u0000\u0000\u0000\u0ee6\u0ee9\u0001\u0000\u0000"+
55745 		"\u0000\u0ee7\u0ee5\u0001\u0000\u0000\u0000\u0ee7\u0ee8\u0001\u0000\u0000"+
55746 		"\u0000\u0ee8\u0eeb\u0001\u0000\u0000\u0000\u0ee9\u0ee7\u0001\u0000\u0000"+
55747 		"\u0000\u0eea\u0ee1\u0001\u0000\u0000\u0000\u0eea\u0eeb\u0001\u0000\u0000"+
55748 		"\u0000\u0eeb\u0eed\u0001\u0000\u0000\u0000\u0eec\u0eee\u0005`\u0000\u0000"+
55749 		"\u0eed\u0eec\u0001\u0000\u0000\u0000\u0eed\u0eee\u0001\u0000\u0000\u0000"+
55750 		"\u0eee\u0eef\u0001\u0000\u0000\u0000\u0eef\u0ef0\u0005}\u0000\u0000\u0ef0"+
55751 		"\u0ef1\u0003\u022c\u0116\u0000\u0ef1\u0ef2\u0005\u00d2\u0000\u0000\u0ef2"+
55752 		"\u0ef3\u0003b1\u0000\u0ef3\u0229\u0001\u0000\u0000\u0000\u0ef4\u0ef5\u0003"+
55753 		"\u0144\u00a2\u0000\u0ef5\u0ef6\u0003\u014a\u00a5\u0000\u0ef6\u0ef9\u0001"+
55754 		"\u0000\u0000\u0000\u0ef7\u0ef9\u0003\u017a\u00bd\u0000\u0ef8\u0ef4\u0001"+
55755 		"\u0000\u0000\u0000\u0ef8\u0ef7\u0001\u0000\u0000\u0000\u0ef9\u0efd\u0001"+
55756 		"\u0000\u0000\u0000\u0efa\u0efc\u0003\u017e\u00bf\u0000\u0efb\u0efa\u0001"+
55757 		"\u0000\u0000\u0000\u0efc\u0eff\u0001\u0000\u0000\u0000\u0efd\u0efb\u0001"+
55758 		"\u0000\u0000\u0000\u0efd\u0efe\u0001\u0000\u0000\u0000\u0efe\u022b\u0001"+
55759 		"\u0000\u0000\u0000\u0eff\u0efd\u0001\u0000\u0000\u0000\u0f00\u0f02\u0003"+
55760 		"\u0230\u0118\u0000\u0f01\u0f00\u0001\u0000\u0000\u0000\u0f02\u0f05\u0001"+
55761 		"\u0000\u0000\u0000\u0f03\u0f01\u0001\u0000\u0000\u0000\u0f03\u0f04\u0001"+
55762 		"\u0000\u0000\u0000\u0f04\u022d\u0001\u0000\u0000\u0000\u0f05\u0f03\u0001"+
55763 		"\u0000\u0000\u0000\u0f06\u0f08\u0005\u016e\u0000\u0000\u0f07\u0f06\u0001"+
55764 		"\u0000\u0000\u0000\u0f07\u0f08\u0001\u0000\u0000\u0000\u0f08\u0f20\u0001"+
55765 		"\u0000\u0000\u0000\u0f09\u0f0b\u0005\u0209\u0000\u0000\u0f0a\u0f09\u0001"+
55766 		"\u0000\u0000\u0000\u0f0a\u0f0b\u0001\u0000\u0000\u0000\u0f0b\u0f20\u0001"+
55767 		"\u0000\u0000\u0000\u0f0c\u0f0d\u0005\u00d0\u0000\u0000\u0f0d\u0f0e\u0005"+
55768 		"l\u0000\u0000\u0f0e\u0f0f\u0005a\u0000\u0000\u0f0f\u0f10\u0005l\u0000"+
55769 		"\u0000\u0f10\u0f16\u0005\u020b\u0000\u0000\u0f11\u0f12\u0005\u020c\u0000"+
55770 		"\u0000\u0f12\u0f13\u0005a\u0000\u0000\u0f13\u0f14\u0005l\u0000\u0000\u0f14"+
55771 		"\u0f16\u0005\u020b\u0000\u0000\u0f15\u0f0c\u0001\u0000\u0000\u0000\u0f15"+
55772 		"\u0f11\u0001\u0000\u0000\u0000\u0f15\u0f16\u0001\u0000\u0000\u0000\u0f16"+
55773 		"\u0f20\u0001\u0000\u0000\u0000\u0f17\u0f19\u0003\u00dcn\u0000\u0f18\u0f17"+
55774 		"\u0001\u0000\u0000\u0000\u0f18\u0f19\u0001\u0000\u0000\u0000\u0f19\u0f20"+
55775 		"\u0001\u0000\u0000\u0000\u0f1a\u0f1b\u0005\u028b\u0000\u0000\u0f1b\u0f1c"+
55776 		"\u0005\u0018\u0000\u0000\u0f1c\u0f1e\u0007\u0000\u0000\u0000\u0f1d\u0f1a"+
55777 		"\u0001\u0000\u0000\u0000\u0f1d\u0f1e\u0001\u0000\u0000\u0000\u0f1e\u0f20"+
55778 		"\u0001\u0000\u0000\u0000\u0f1f\u0f07\u0001\u0000\u0000\u0000\u0f1f\u0f0a"+
55779 		"\u0001\u0000\u0000\u0000\u0f1f\u0f15\u0001\u0000\u0000\u0000\u0f1f\u0f18"+
55780 		"\u0001\u0000\u0000\u0000\u0f1f\u0f1d\u0001\u0000\u0000\u0000\u0f20\u022f"+
55781 		"\u0001\u0000\u0000\u0000\u0f21\u0f2c\u0003\u00f2y\u0000\u0f22\u0f2c\u0003"+
55782 		"\u0108\u0084\u0000\u0f23\u0f2c\u0003\u011c\u008e\u0000\u0f24\u0f2c\u0003"+
55783 		"\u0130\u0098\u0000\u0f25\u0f2c\u0003\u02aa\u0155\u0000\u0f26\u0f2c\u0003"+
55784 		"\u02b8\u015c\u0000\u0f27\u0f2c\u0003\u02c2\u0161\u0000\u0f28\u0f2c\u0003"+
55785 		"\u02ca\u0165\u0000\u0f29\u0f2c\u0003\u0216\u010b\u0000\u0f2a\u0f2c\u0003"+
55786 		"\u0206\u0103\u0000\u0f2b\u0f21\u0001\u0000\u0000\u0000\u0f2b\u0f22\u0001"+
55787 		"\u0000\u0000\u0000\u0f2b\u0f23\u0001\u0000\u0000\u0000\u0f2b\u0f24\u0001"+
55788 		"\u0000\u0000\u0000\u0f2b\u0f25\u0001\u0000\u0000\u0000\u0f2b\u0f26\u0001"+
55789 		"\u0000\u0000\u0000\u0f2b\u0f27\u0001\u0000\u0000\u0000\u0f2b\u0f28\u0001"+
55790 		"\u0000\u0000\u0000\u0f2b\u0f29\u0001\u0000\u0000\u0000\u0f2b\u0f2a\u0001"+
55791 		"\u0000\u0000\u0000\u0f2c\u0f2e\u0001\u0000\u0000\u0000\u0f2d\u0f2f\u0005"+
55792 		"+\u0000\u0000\u0f2e\u0f2d\u0001\u0000\u0000\u0000\u0f2e\u0f2f\u0001\u0000"+
55793 		"\u0000\u0000\u0f2f\u0231\u0001\u0000\u0000\u0000\u0f30\u0f35\u0003\u0234"+
55794 		"\u011a\u0000\u0f31\u0f32\u0005%\u0000\u0000\u0f32\u0f34\u0003\u0234\u011a"+
55795 		"\u0000\u0f33\u0f31\u0001\u0000\u0000\u0000\u0f34\u0f37\u0001\u0000\u0000"+
55796 		"\u0000\u0f35\u0f33\u0001\u0000\u0000\u0000\u0f35\u0f36\u0001\u0000\u0000"+
55797 		"\u0000\u0f36\u0f39\u0001\u0000\u0000\u0000\u0f37\u0f35\u0001\u0000\u0000"+
55798 		"\u0000\u0f38\u0f30\u0001\u0000\u0000\u0000\u0f38\u0f39\u0001\u0000\u0000"+
55799 		"\u0000\u0f39\u0233\u0001\u0000\u0000\u0000\u0f3a\u0f3c\u0003\u0208\u0104"+
55800 		"\u0000\u0f3b\u0f3d\u0005\u020d\u0000\u0000\u0f3c\u0f3b\u0001\u0000\u0000"+
55801 		"\u0000\u0f3c\u0f3d\u0001\u0000\u0000\u0000\u0f3d\u0f40\u0001\u0000\u0000"+
55802 		"\u0000\u0f3e\u0f3f\u0005\u0018\u0000\u0000\u0f3f\u0f41\u0003\u001a\r\u0000"+
55803 		"\u0f40\u0f3e\u0001\u0000\u0000\u0000\u0f40\u0f41\u0001\u0000\u0000\u0000"+
55804 		"\u0f41\u0f43\u0001\u0000\u0000\u0000\u0f42\u0f44\u00073\u0000\u0000\u0f43"+
55805 		"\u0f42\u0001\u0000\u0000\u0000\u0f43\u0f44\u0001\u0000\u0000\u0000\u0f44"+
55806 		"\u0235\u0001\u0000\u0000\u0000\u0f45\u0f47\u0003\u0238\u011c\u0000\u0f46"+
55807 		"\u0f45\u0001\u0000\u0000\u0000\u0f46\u0f47\u0001\u0000\u0000\u0000\u0f47"+
55808 		"\u0f4a\u0001\u0000\u0000\u0000\u0f48\u0f49\u0005f\u0000\u0000\u0f49\u0f4b"+
55809 		"\u0005\u0134\u0000\u0000\u0f4a\u0f48\u0001\u0000\u0000\u0000\u0f4a\u0f4b"+
55810 		"\u0001\u0000\u0000\u0000\u0f4b\u0f4c\u0001\u0000\u0000\u0000\u0f4c\u0f4d"+
55811 		"\u0005`\u0000\u0000\u0f4d\u0f4e\u0003\u023c\u011e\u0000\u0f4e\u0237\u0001"+
55812 		"\u0000\u0000\u0000\u0f4f\u0f58\u0005M\u0000\u0000\u0f50\u0f55\u0003\u023a"+
55813 		"\u011d\u0000\u0f51\u0f52\u0005%\u0000\u0000\u0f52\u0f54\u0003\u023a\u011d"+
55814 		"\u0000\u0f53\u0f51\u0001\u0000\u0000\u0000\u0f54\u0f57\u0001\u0000\u0000"+
55815 		"\u0000\u0f55\u0f53\u0001\u0000\u0000\u0000\u0f55\u0f56\u0001\u0000\u0000"+
55816 		"\u0000\u0f56\u0f59\u0001\u0000\u0000\u0000\u0f57\u0f55\u0001\u0000\u0000"+
55817 		"\u0000\u0f58\u0f50\u0001\u0000\u0000\u0000\u0f58\u0f59\u0001\u0000\u0000"+
55818 		"\u0000\u0f59\u0239\u0001\u0000\u0000\u0000\u0f5a\u0f60\u0005\u016e\u0000"+
55819 		"\u0000\u0f5b\u0f60\u0005\u01e9\u0000\u0000\u0f5c\u0f60\u0003\u00dcn\u0000"+
55820 		"\u0f5d\u0f60\u0005\u0218\u0000\u0000\u0f5e\u0f60\u0005\u0209\u0000\u0000"+
55821 		"\u0f5f\u0f5a\u0001\u0000\u0000\u0000\u0f5f\u0f5b\u0001\u0000\u0000\u0000"+
55822 		"\u0f5f\u0f5c\u0001\u0000\u0000\u0000\u0f5f\u0f5d\u0001\u0000\u0000\u0000"+
55823 		"\u0f5f\u0f5e\u0001\u0000\u0000\u0000\u0f60\u023b\u0001\u0000\u0000\u0000"+
55824 		"\u0f61\u0f63\u0005}\u0000\u0000\u0f62\u0f61\u0001\u0000\u0000\u0000\u0f62"+
55825 		"\u0f63\u0001\u0000\u0000\u0000\u0f63\u0f64\u0001\u0000\u0000\u0000\u0f64"+
55826 		"\u0f66\u0003\u022c\u0116\u0000\u0f65\u0f67\u0005\u0116\u0000\u0000\u0f66"+
55827 		"\u0f65\u0001\u0000\u0000\u0000\u0f66\u0f67\u0001\u0000\u0000\u0000\u0f67"+
55828 		"\u0f85\u0001\u0000\u0000\u0000\u0f68\u0f69\u0005\u0161\u0000\u0000\u0f69"+
55829 		"\u0f6d\u0005\u00aa\u0000\u0000\u0f6a\u0f6b\u0003L&\u0000\u0f6b\u0f6c\u0005"+
55830 		"\u0014\u0000\u0000\u0f6c\u0f6e\u0001\u0000\u0000\u0000\u0f6d\u0f6a\u0001"+
55831 		"\u0000\u0000\u0000\u0f6d\u0f6e\u0001\u0000\u0000\u0000\u0f6e\u0f72\u0001"+
55832 		"\u0000\u0000\u0000\u0f6f\u0f70\u0003L&\u0000\u0f70\u0f71\u0005\u0014\u0000"+
55833 		"\u0000\u0f71\u0f73\u0001\u0000\u0000\u0000\u0f72\u0f6f\u0001\u0000\u0000"+
55834 		"\u0000\u0f72\u0f73\u0001\u0000\u0000\u0000\u0f73\u0f74\u0001\u0000\u0000"+
55835 		"\u0000\u0f74\u0f85\u0003N\'\u0000\u0f75\u0f76\u0005}\u0000\u0000\u0f76"+
55836 		"\u0f77\u0005\u0210\u0000\u0000\u0f77\u0f78\u0005M\u0000\u0000\u0f78\u0f7d"+
55837 		"\u0003\u023e\u011f\u0000\u0f79\u0f7a\u0005%\u0000\u0000\u0f7a\u0f7c\u0003"+
55838 		"\u023e\u011f\u0000\u0f7b\u0f79\u0001\u0000\u0000\u0000\u0f7c\u0f7f\u0001"+
55839 		"\u0000\u0000\u0000\u0f7d\u0f7b\u0001\u0000\u0000\u0000\u0f7d\u0f7e\u0001"+
55840 		"\u0000\u0000\u0000\u0f7e\u0f80\u0001\u0000\u0000\u0000\u0f7f\u0f7d\u0001"+
55841 		"\u0000\u0000\u0000\u0f80\u0f82\u0003\u022c\u0116\u0000\u0f81\u0f83\u0005"+
55842 		"\u0116\u0000\u0000\u0f82\u0f81\u0001\u0000\u0000\u0000\u0f82\u0f83\u0001"+
55843 		"\u0000\u0000\u0000\u0f83\u0f85\u0001\u0000\u0000\u0000\u0f84\u0f62\u0001"+
55844 		"\u0000\u0000\u0000\u0f84\u0f68\u0001\u0000\u0000\u0000\u0f84\u0f75\u0001"+
55845 		"\u0000\u0000\u0000\u0f85\u023d\u0001\u0000\u0000\u0000\u0f86\u0f87\u0005"+
55846 		"\u0211\u0000\u0000\u0f87\u0f88\u0005\u0018\u0000\u0000\u0f88\u0f9d\u0003"+
55847 		"\u001c\u000e\u0000\u0f89\u0f8a\u0005\u0100\u0000\u0000\u0f8a\u0f8b\u0005"+
55848 		"\u0213\u0000\u0000\u0f8b\u0f8c\u0005\u0212\u0000\u0000\u0f8c\u0f91\u0005"+
55849 		"\u0018\u0000\u0000\u0f8d\u0f92\u0005\u0214\u0000\u0000\u0f8e\u0f8f\u0005"+
55850 		"\u0215\u0000\u0000\u0f8f\u0f92\u0005\u0216\u0000\u0000\u0f90\u0f92\u0005"+
55851 		"\u0217\u0000\u0000\u0f91\u0f8d\u0001\u0000\u0000\u0000\u0f91\u0f8e\u0001"+
55852 		"\u0000\u0000\u0000\u0f91\u0f90\u0001\u0000\u0000\u0000\u0f92\u0f9d\u0001"+
55853 		"\u0000\u0000\u0000\u0f93\u0f94\u0005\u0284\u0000\u0000\u0f94\u0f95\u0005"+
55854 		"\u0018\u0000\u0000\u0f95\u0f9d\u0003\u001e\u000f\u0000\u0f96\u0f97\u0005"+
55855 		"\u0291\u0000\u0000\u0f97\u0f98\u0005\u0018\u0000\u0000\u0f98\u0f9d\u0003"+
55856 		"\u001c\u000e\u0000\u0f99\u0f9a\u0005\u0292\u0000\u0000\u0f9a\u0f9b\u0005"+
55857 		"\u0018\u0000\u0000\u0f9b\u0f9d\u0007\u0000\u0000\u0000\u0f9c\u0f86\u0001"+
55858 		"\u0000\u0000\u0000\u0f9c\u0f89\u0001\u0000\u0000\u0000\u0f9c\u0f93\u0001"+
55859 		"\u0000\u0000\u0000\u0f9c\u0f96\u0001\u0000\u0000\u0000\u0f9c\u0f99\u0001"+
55860 		"\u0000\u0000\u0000\u0f9d\u023f\u0001\u0000\u0000\u0000\u0f9e\u0f9f\u0005"+
55861 		"M\u0000\u0000\u0f9f\u0fa4\u0003\u0242\u0121\u0000\u0fa0\u0fa1\u0005%\u0000"+
55862 		"\u0000\u0fa1\u0fa3\u0003\u0242\u0121\u0000\u0fa2\u0fa0\u0001\u0000\u0000"+
55863 		"\u0000\u0fa3\u0fa6\u0001\u0000\u0000\u0000\u0fa4\u0fa2\u0001\u0000\u0000"+
55864 		"\u0000\u0fa4\u0fa5\u0001\u0000\u0000\u0000\u0fa5\u0fa8\u0001\u0000\u0000"+
55865 		"\u0000\u0fa6\u0fa4\u0001\u0000\u0000\u0000\u0fa7\u0f9e\u0001\u0000\u0000"+
55866 		"\u0000\u0fa7\u0fa8\u0001\u0000\u0000\u0000\u0fa8\u0fa9\u0001\u0000\u0000"+
55867 		"\u0000\u0fa9\u0fab\u0005`\u0000\u0000\u0faa\u0fac\u0003\u0244\u0122\u0000"+
55868 		"\u0fab\u0faa\u0001\u0000\u0000\u0000\u0fab\u0fac\u0001\u0000\u0000\u0000"+
55869 		"\u0fac\u0fad\u0001\u0000\u0000\u0000\u0fad\u0fb1\u0003\u02ca\u0165\u0000"+
55870 		"\u0fae\u0faf\u0005M\u0000\u0000\u0faf\u0fb0\u0005\u00f7\u0000\u0000\u0fb0"+
55871 		"\u0fb2\u0005\u00fa\u0000\u0000\u0fb1\u0fae\u0001\u0000\u0000\u0000\u0fb1"+
55872 		"\u0fb2\u0001\u0000\u0000\u0000\u0fb2\u0241\u0001\u0000\u0000\u0000\u0fb3"+
55873 		"\u0fb4\u00074\u0000\u0000\u0fb4\u0243\u0001\u0000\u0000\u0000\u0fb5\u0fb6"+
55874 		"\u0005M\u0000\u0000\u0fb6\u0fbb\u0003\u0246\u0123\u0000\u0fb7\u0fb8\u0005"+
55875 		"%\u0000\u0000\u0fb8\u0fba\u0003\u0246\u0123\u0000\u0fb9\u0fb7\u0001\u0000"+
55876 		"\u0000\u0000\u0fba\u0fbd\u0001\u0000\u0000\u0000\u0fbb\u0fb9\u0001\u0000"+
55877 		"\u0000\u0000\u0fbb\u0fbc\u0001\u0000\u0000\u0000\u0fbc\u0245\u0001\u0000"+
55878 		"\u0000\u0000\u0fbd\u0fbb\u0001\u0000\u0000\u0000\u0fbe\u0fca\u0003N\'"+
55879 		"\u0000\u0fbf\u0fc0\u0005\u001f\u0000\u0000\u0fc0\u0fc5\u0003H$\u0000\u0fc1"+
55880 		"\u0fc2\u0005%\u0000\u0000\u0fc2\u0fc4\u0003H$\u0000\u0fc3\u0fc1\u0001"+
55881 		"\u0000\u0000\u0000\u0fc4\u0fc7\u0001\u0000\u0000\u0000\u0fc5\u0fc3\u0001"+
55882 		"\u0000\u0000\u0000\u0fc5\u0fc6\u0001\u0000\u0000\u0000\u0fc6\u0fc8\u0001"+
55883 		"\u0000\u0000\u0000\u0fc7\u0fc5\u0001\u0000\u0000\u0000\u0fc8\u0fc9\u0005"+
55884 		" \u0000\u0000\u0fc9\u0fcb\u0001\u0000\u0000\u0000\u0fca\u0fbf\u0001\u0000"+
55885 		"\u0000\u0000\u0fca\u0fcb\u0001\u0000\u0000\u0000\u0fcb\u0fcc\u0001\u0000"+
55886 		"\u0000\u0000\u0fcc\u0fcd\u0005`\u0000\u0000\u0fcd\u0fce\u0005\u001f\u0000"+
55887 		"\u0000\u0fce\u0fcf\u0003\u02ca\u0165\u0000\u0fcf\u0fd0\u0005 \u0000\u0000"+
55888 		"\u0fd0\u0247\u0001\u0000\u0000\u0000\u0fd1\u0fd2\u0005M\u0000\u0000\u0fd2"+
55889 		"\u0fd3\u0003\u024a\u0125\u0000\u0fd3\u0fd4\u0005%\u0000\u0000\u0fd4\u0fd5"+
55890 		"\u0003\u024a\u0125\u0000\u0fd5\u0fd7\u0001\u0000\u0000\u0000\u0fd6\u0fd1"+
55891 		"\u0001\u0000\u0000\u0000\u0fd6\u0fd7\u0001\u0000\u0000\u0000\u0fd7\u0fdc"+
55892 		"\u0001\u0000\u0000\u0000\u0fd8\u0fdd\u0005f\u0000\u0000\u0fd9\u0fdd\u0005"+
55893 		"\u021a\u0000\u0000\u0fda\u0fdb\u0005\u021b\u0000\u0000\u0fdb\u0fdd\u0005"+
55894 		"\u00cf\u0000\u0000\u0fdc\u0fd8\u0001\u0000\u0000\u0000\u0fdc\u0fd9\u0001"+
55895 		"\u0000\u0000\u0000\u0fdc\u0fda\u0001\u0000\u0000\u0000\u0fdd\u0fdf\u0001"+
55896 		"\u0000\u0000\u0000\u0fde\u0fe0\u0005/\u0000\u0000\u0fdf\u0fde\u0001\u0000"+
55897 		"\u0000\u0000\u0fdf\u0fe0\u0001\u0000\u0000\u0000\u0fe0\u0fe2\u0001\u0000"+
55898 		"\u0000\u0000\u0fe1\u0fe3\u0005%\u0000\u0000\u0fe2\u0fe1\u0001\u0000\u0000"+
55899 		"\u0000\u0fe2\u0fe3\u0001\u0000\u0000\u0000\u0fe3\u0fe5\u0001\u0000\u0000"+
55900 		"\u0000\u0fe4\u0fe6\u00050\u0000\u0000\u0fe5\u0fe4\u0001\u0000\u0000\u0000"+
55901 		"\u0fe5\u0fe6\u0001\u0000\u0000\u0000\u0fe6\u0fe8\u0001\u0000\u0000\u0000"+
55902 		"\u0fe7\u0fe9\u0005%\u0000\u0000\u0fe8\u0fe7\u0001\u0000\u0000\u0000\u0fe8"+
55903 		"\u0fe9\u0001\u0000\u0000\u0000\u0fe9\u0feb\u0001\u0000\u0000\u0000\u0fea"+
55904 		"\u0fec\u00051\u0000\u0000\u0feb\u0fea\u0001\u0000\u0000\u0000\u0feb\u0fec"+
55905 		"\u0001\u0000\u0000\u0000\u0fec\u0fee\u0001\u0000\u0000\u0000\u0fed\u0fef"+
55906 		"\u0005%\u0000\u0000\u0fee\u0fed\u0001\u0000\u0000\u0000\u0fee\u0fef\u0001"+
55907 		"\u0000\u0000\u0000\u0fef\u0ff2\u0001\u0000\u0000\u0000\u0ff0\u0ff1\u0005"+
55908 		"M\u0000\u0000\u0ff1\u0ff3\u0005\u021c\u0000\u0000\u0ff2\u0ff0\u0001\u0000"+
55909 		"\u0000\u0000\u0ff2\u0ff3\u0001\u0000\u0000\u0000\u0ff3\u0ff7\u0001\u0000"+
55910 		"\u0000\u0000\u0ff4\u0ff5\u0005k\u0000\u0000\u0ff5\u0ff6\u0005f\u0000\u0000"+
55911 		"\u0ff6\u0ff8\u0005\u0134\u0000\u0000\u0ff7\u0ff4\u0001\u0000\u0000\u0000"+
55912 		"\u0ff7\u0ff8\u0001\u0000\u0000\u0000\u0ff8\u0ff9\u0001\u0000\u0000\u0000"+
55913 		"\u0ff9\u0ffe\u0005`\u0000\u0000\u0ffa\u0fff\u0003\u022c\u0116\u0000\u0ffb"+
55914 		"\u0ffc\u0005\u0161\u0000\u0000\u0ffc\u0ffd\u0005\u00aa\u0000\u0000\u0ffd"+
55915 		"\u0fff\u0003\u024c\u0126\u0000\u0ffe\u0ffa\u0001\u0000\u0000\u0000\u0ffe"+
55916 		"\u0ffb\u0001\u0000\u0000\u0000\u0fff\u0249\u0001\u0000\u0000\u0000\u1000"+
55917 		"\u1006\u0005\u016e\u0000\u0000\u1001\u1006\u0003\u00dcn\u0000\u1002\u1006"+
55918 		"\u0005\u0218\u0000\u0000\u1003\u1006\u0005\u0209\u0000\u0000\u1004\u1006"+
55919 		"\u0001\u0000\u0000\u0000\u1005\u1000\u0001\u0000\u0000\u0000\u1005\u1001"+
55920 		"\u0001\u0000\u0000\u0000\u1005\u1002\u0001\u0000\u0000\u0000\u1005\u1003"+
55921 		"\u0001\u0000\u0000\u0000\u1005\u1004\u0001\u0000\u0000\u0000\u1006\u024b"+
55922 		"\u0001\u0000\u0000\u0000\u1007\u1008\u0003N\'\u0000\u1008\u1009\u0005"+
55923 		"\u0014\u0000\u0000\u1009\u100a\u0003N\'\u0000\u100a\u100b\u0005\u0014"+
55924 		"\u0000\u0000\u100b\u100c\u0003N\'\u0000\u100c\u024d\u0001\u0000\u0000"+
55925 		"\u0000\u100d\u1013\u0003@ \u0000\u100e\u1013\u0003:\u001d\u0000\u100f"+
55926 		"\u1010\u0005r\u0000\u0000\u1010\u1013\u0005\u014d\u0000\u0000\u1011\u1013"+
55927 		"\u0005\u00cc\u0000\u0000\u1012\u100d\u0001\u0000\u0000\u0000\u1012\u100e"+
55928 		"\u0001\u0000\u0000\u0000\u1012\u100f\u0001\u0000\u0000\u0000\u1012\u1011"+
55929 		"\u0001\u0000\u0000\u0000\u1013\u024f\u0001\u0000\u0000\u0000\u1014\u1015"+
55930 		"\u0005`\u0000\u0000\u1015\u1031\u0003\u009eO\u0000\u1016\u1017\u00075"+
55931 		"\u0000\u0000\u1017\u1018\u0005M\u0000\u0000\u1018\u1031\u0003b1\u0000"+
55932 		"\u1019\u101a\u0005\u021d\u0000\u0000\u101a\u101b\u0005w\u0000\u0000\u101b"+
55933 		"\u1031\u0003b1\u0000\u101c\u101e\u0005\u0220\u0000\u0000\u101d\u101f\u0003"+
55934 		"b1\u0000\u101e\u101d\u0001\u0000\u0000\u0000\u101e\u101f\u0001\u0000\u0000"+
55935 		"\u0000\u101f\u1031\u0001\u0000\u0000\u0000\u1020\u1021\u0005\u00f9\u0000"+
55936 		"\u0000\u1021\u1031\u0005\u0220\u0000\u0000\u1022\u1024\u0005\u0221\u0000"+
55937 		"\u0000\u1023\u1025\u0003b1\u0000\u1024\u1023\u0001\u0000\u0000\u0000\u1024"+
55938 		"\u1025\u0001\u0000\u0000\u0000\u1025\u1031\u0001\u0000\u0000\u0000\u1026"+
55939 		"\u1027\u0005\u00f9\u0000\u0000\u1027\u1031\u0005\u0221\u0000\u0000\u1028"+
55940 		"\u1029\u0005\u021f\u0000\u0000\u1029\u1031\u0003b1\u0000\u102a\u102b\u0005"+
55941 		"\u00f9\u0000\u0000\u102b\u1031\u0005\u021f\u0000\u0000\u102c\u102e\u0005"+
55942 		"\u00f9\u0000\u0000\u102d\u102c\u0001\u0000\u0000\u0000\u102d\u102e\u0001"+
55943 		"\u0000\u0000\u0000\u102e\u102f\u0001\u0000\u0000\u0000\u102f\u1031\u0005"+
55944 		"\u021e\u0000\u0000\u1030\u1014\u0001\u0000\u0000\u0000\u1030\u1016\u0001"+
55945 		"\u0000\u0000\u0000\u1030\u1019\u0001\u0000\u0000\u0000\u1030\u101c\u0001"+
55946 		"\u0000\u0000\u0000\u1030\u1020\u0001\u0000\u0000\u0000\u1030\u1022\u0001"+
55947 		"\u0000\u0000\u0000\u1030\u1026\u0001\u0000\u0000\u0000\u1030\u1028\u0001"+
55948 		"\u0000\u0000\u0000\u1030\u102a\u0001\u0000\u0000\u0000\u1030\u102d\u0001"+
55949 		"\u0000\u0000\u0000\u1031\u0251\u0001\u0000\u0000\u0000\u1032\u1033\u0005"+
55950 		"\u0229\u0000\u0000\u1033\u1035\u0003R)\u0000\u1034\u1032\u0001\u0000\u0000"+
55951 		"\u0000\u1034\u1035\u0001\u0000\u0000\u0000\u1035\u1038\u0001\u0000\u0000"+
55952 		"\u0000\u1036\u1037\u0005_\u0000\u0000\u1037\u1039\u0003\u0254\u012a\u0000"+
55953 		"\u1038\u1036\u0001\u0000\u0000\u0000\u1038\u1039\u0001\u0000\u0000\u0000"+
55954 		"\u1039\u1046\u0001\u0000\u0000\u0000\u103a\u103b\u0005M\u0000\u0000\u103b"+
55955 		"\u103c\u0005\u001f\u0000\u0000\u103c\u1041\u0003\u025a\u012d\u0000\u103d"+
55956 		"\u103e\u0005%\u0000\u0000\u103e\u1040\u0003\u025a\u012d\u0000\u103f\u103d"+
55957 		"\u0001\u0000\u0000\u0000\u1040\u1043\u0001\u0000\u0000\u0000\u1041\u103f"+
55958 		"\u0001\u0000\u0000\u0000\u1041\u1042\u0001\u0000\u0000\u0000\u1042\u1044"+
55959 		"\u0001\u0000\u0000\u0000\u1043\u1041\u0001\u0000\u0000\u0000\u1044\u1045"+
55960 		"\u0005 \u0000\u0000\u1045\u1047\u0001\u0000\u0000\u0000\u1046\u103a\u0001"+
55961 		"\u0000\u0000\u0000\u1046\u1047\u0001\u0000\u0000\u0000\u1047\u1051\u0001"+
55962 		"\u0000\u0000\u0000\u1048\u104f\u0005a\u0000\u0000\u1049\u104a\u00034\u001a"+
55963 		"\u0000\u104a\u104b\u0005\u001f\u0000\u0000\u104b\u104c\u0003H$\u0000\u104c"+
55964 		"\u104d\u0005 \u0000\u0000\u104d\u1050\u0001\u0000\u0000\u0000\u104e\u1050"+
55965 		"\u0003N\'\u0000\u104f\u1049\u0001\u0000\u0000\u0000\u104f\u104e\u0001"+
55966 		"\u0000\u0000\u0000\u1050\u1052\u0001\u0000\u0000\u0000\u1051\u1048\u0001"+
55967 		"\u0000\u0000\u0000\u1051\u1052\u0001\u0000\u0000\u0000\u1052\u1058\u0001"+
55968 		"\u0000\u0000\u0000\u1053\u1056\u0005\u01ab\u0000\u0000\u1054\u1057\u0003"+
55969 		"N\'\u0000\u1055\u1057\u0003\u001c\u000e\u0000\u1056\u1054\u0001\u0000"+
55970 		"\u0000\u0000\u1056\u1055\u0001\u0000\u0000\u0000\u1057\u1059\u0001\u0000"+
55971 		"\u0000\u0000\u1058\u1053\u0001\u0000\u0000\u0000\u1058\u1059\u0001\u0000"+
55972 		"\u0000\u0000\u1059\u0253\u0001\u0000\u0000\u0000\u105a\u105f\u0003\u0256"+
55973 		"\u012b\u0000\u105b\u105c\u0005h\u0000\u0000\u105c\u105e\u0003\u0256\u012b"+
55974 		"\u0000\u105d\u105b\u0001\u0000\u0000\u0000\u105e\u1061\u0001\u0000\u0000"+
55975 		"\u0000\u105f\u105d\u0001\u0000\u0000\u0000\u105f\u1060\u0001\u0000\u0000"+
55976 		"\u0000\u1060\u0255\u0001\u0000\u0000\u0000\u1061\u105f\u0001\u0000\u0000"+
55977 		"\u0000\u1062\u1063\u0003H$\u0000\u1063\u1064\u0005q\u0000\u0000\u1064"+
55978 		"\u1065\u0005\u001f\u0000\u0000\u1065\u106a\u0003b1\u0000\u1066\u1067\u0005"+
55979 		"%\u0000\u0000\u1067\u1069\u0003b1\u0000\u1068\u1066\u0001\u0000\u0000"+
55980 		"\u0000\u1069\u106c\u0001\u0000\u0000\u0000\u106a\u1068\u0001\u0000\u0000"+
55981 		"\u0000\u106a\u106b\u0001\u0000\u0000\u0000\u106b\u106d\u0001\u0000\u0000"+
55982 		"\u0000\u106c\u106a\u0001\u0000\u0000\u0000\u106d\u106e\u0005 \u0000\u0000"+
55983 		"\u106e\u1074\u0001\u0000\u0000\u0000\u106f\u1070\u0003H$\u0000\u1070\u1071"+
55984 		"\u0003n7\u0000\u1071\u1072\u0003b1\u0000\u1072\u1074\u0001\u0000\u0000"+
55985 		"\u0000\u1073\u1062\u0001\u0000\u0000\u0000\u1073\u106f\u0001\u0000\u0000"+
55986 		"\u0000\u1074\u0257\u0001\u0000\u0000\u0000\u1075\u107c\u0005\u0132\u0000"+
55987 		"\u0000\u1076\u1077\u0005\u00ee\u0000\u0000\u1077\u107a\u0005\u0018\u0000"+
55988 		"\u0000\u1078\u107b\u0005r\u0000\u0000\u1079\u107b\u0003b1\u0000\u107a"+
55989 		"\u1078\u0001\u0000\u0000\u0000\u107a\u1079\u0001\u0000\u0000\u0000\u107b"+
55990 		"\u107d\u0001\u0000\u0000\u0000\u107c\u1076\u0001\u0000\u0000\u0000\u107c"+
55991 		"\u107d\u0001\u0000\u0000\u0000\u107d\u108a\u0001\u0000\u0000\u0000\u107e"+
55992 		"\u107f\u0005M\u0000\u0000\u107f\u1080\u0005\u001f\u0000\u0000\u1080\u1085"+
55993 		"\u0003\u025a\u012d\u0000\u1081\u1082\u0005%\u0000\u0000\u1082\u1084\u0003"+
55994 		"\u025a\u012d\u0000\u1083\u1081\u0001\u0000\u0000\u0000\u1084\u1087\u0001"+
55995 		"\u0000\u0000\u0000\u1085\u1083\u0001\u0000\u0000\u0000\u1085\u1086\u0001"+
55996 		"\u0000\u0000\u0000\u1086\u1088\u0001\u0000\u0000\u0000\u1087\u1085\u0001"+
55997 		"\u0000\u0000\u0000\u1088\u1089\u0005 \u0000\u0000\u1089\u108b\u0001\u0000"+
55998 		"\u0000\u0000\u108a\u107e\u0001\u0000\u0000\u0000\u108a\u108b\u0001\u0000"+
55999 		"\u0000\u0000\u108b\u10b4\u0001\u0000\u0000\u0000\u108c\u10b4\u0005\u009d"+
56000 		"\u0000\u0000\u108d\u1091\u0005\u0225\u0000\u0000\u108e\u108f\u0005\u00ee"+
56001 		"\u0000\u0000\u108f\u1090\u0005\u0018\u0000\u0000\u1090\u1092\u0003b1\u0000"+
56002 		"\u1091\u108e\u0001\u0000\u0000\u0000\u1091\u1092\u0001\u0000\u0000\u0000"+
56003 		"\u1092\u1098\u0001\u0000\u0000\u0000\u1093\u1094\u0005M\u0000\u0000\u1094"+
56004 		"\u1095\u0005\u001f\u0000\u0000\u1095\u1096\u0003\u025e\u012f\u0000\u1096"+
56005 		"\u1097\u0005 \u0000\u0000\u1097\u1099\u0001\u0000\u0000\u0000\u1098\u1093"+
56006 		"\u0001\u0000\u0000\u0000\u1098\u1099\u0001\u0000\u0000\u0000\u1099\u10b4"+
56007 		"\u0001\u0000\u0000\u0000\u109a\u109b\u0005:\u0000\u0000\u109b\u109c\u0005"+
56008 		"\u001f\u0000\u0000\u109c\u109d\u0003\u0260\u0130\u0000\u109d\u109e\u0005"+
56009 		"%\u0000\u0000\u109e\u109f\u0003\u0260\u0130\u0000\u109f\u10a0\u0001\u0000"+
56010 		"\u0000\u0000\u10a0\u10a1\u0005 \u0000\u0000\u10a1\u10b4\u0001\u0000\u0000"+
56011 		"\u0000\u10a2\u10af\u0005\u0226\u0000\u0000\u10a3\u10a4\u0005M\u0000\u0000"+
56012 		"\u10a4\u10a5\u0005\u001f\u0000\u0000\u10a5\u10aa\u0003\u0262\u0131\u0000"+
56013 		"\u10a6\u10a7\u0005%\u0000\u0000\u10a7\u10a9\u0003\u0262\u0131\u0000\u10a8"+
56014 		"\u10a6\u0001\u0000\u0000\u0000\u10a9\u10ac\u0001\u0000\u0000\u0000\u10aa"+
56015 		"\u10a8\u0001\u0000\u0000\u0000\u10aa\u10ab\u0001\u0000\u0000\u0000\u10ab"+
56016 		"\u10ad\u0001\u0000\u0000\u0000\u10ac\u10aa\u0001\u0000\u0000\u0000\u10ad"+
56017 		"\u10ae\u0005 \u0000\u0000\u10ae\u10b0\u0001\u0000\u0000\u0000\u10af\u10a3"+
56018 		"\u0001\u0000\u0000\u0000\u10af\u10b0\u0001\u0000\u0000\u0000\u10b0\u10b4"+
56019 		"\u0001\u0000\u0000\u0000\u10b1\u10b4\u0005\u0227\u0000\u0000\u10b2\u10b4"+
56020 		"\u0005\u0228\u0000\u0000\u10b3\u1075\u0001\u0000\u0000\u0000\u10b3\u108c"+
56021 		"\u0001\u0000\u0000\u0000\u10b3\u108d\u0001\u0000\u0000\u0000\u10b3\u109a"+
56022 		"\u0001\u0000\u0000\u0000\u10b3\u10a2\u0001\u0000\u0000\u0000\u10b3\u10b1"+
56023 		"\u0001\u0000\u0000\u0000\u10b3\u10b2\u0001\u0000\u0000\u0000\u10b4\u0259"+
56024 		"\u0001\u0000\u0000\u0000\u10b5\u10b6\u0005\u01a9\u0000\u0000\u10b6\u10b7"+
56025 		"\u0005\u0018\u0000\u0000\u10b7\u10f9\u0007\u0000\u0000\u0000\u10b8\u10b9"+
56026 		"\u0005\u0119\u0000\u0000\u10b9\u10ba\u0005\u0018\u0000\u0000\u10ba\u10f9"+
56027 		"\u0003b1\u0000\u10bb\u10bc\u0005\u01a3\u0000\u0000\u10bc\u10bd\u0005\u0018"+
56028 		"\u0000\u0000\u10bd\u10f9\u0007\u0000\u0000\u0000\u10be\u10bf\u0005\u01a4"+
56029 		"\u0000\u0000\u10bf\u10c0\u0005\u0018\u0000\u0000\u10c0\u10f9\u0007\u0000"+
56030 		"\u0000\u0000\u10c1\u10c2\u0005\u019f\u0000\u0000\u10c2\u10c3\u0005\u0018"+
56031 		"\u0000\u0000\u10c3\u10f9\u0007\u0000\u0000\u0000\u10c4\u10c5\u0005\u019e"+
56032 		"\u0000\u0000\u10c5\u10c6\u0005\u0018\u0000\u0000\u10c6\u10f9\u0007\u0000"+
56033 		"\u0000\u0000\u10c7\u10c8\u0005\u01b5\u0000\u0000\u10c8\u10c9\u0005\u0018"+
56034 		"\u0000\u0000\u10c9\u10f9\u0007\u0000\u0000\u0000\u10ca\u10cb\u0005\u0129"+
56035 		"\u0000\u0000\u10cb\u10d1\u0005\u0018\u0000\u0000\u10cc\u10ce\u0005a\u0000"+
56036 		"\u0000\u10cd\u10cf\u0003\u00d0h\u0000\u10ce\u10cd\u0001\u0000\u0000\u0000"+
56037 		"\u10ce\u10cf\u0001\u0000\u0000\u0000\u10cf\u10d2\u0001\u0000\u0000\u0000"+
56038 		"\u10d0\u10d2\u0005b\u0000\u0000\u10d1\u10cc\u0001\u0000\u0000\u0000\u10d1"+
56039 		"\u10d0\u0001\u0000\u0000\u0000\u10d2\u10f9\u0001\u0000\u0000\u0000\u10d3"+
56040 		"\u10d4\u0005\u0135\u0000\u0000\u10d4\u10d5\u0005\u0018\u0000\u0000\u10d5"+
56041 		"\u10f9\u0007\u0000\u0000\u0000\u10d6\u10d7\u0005\u01a6\u0000\u0000\u10d7"+
56042 		"\u10d8\u0005\u0018\u0000\u0000\u10d8\u10da\u0003b1\u0000\u10d9\u10db\u0005"+
56043 		"\u010f\u0000\u0000\u10da\u10d9\u0001\u0000\u0000\u0000\u10da\u10db\u0001"+
56044 		"\u0000\u0000\u0000\u10db\u10f9\u0001\u0000\u0000\u0000\u10dc\u10dd\u0005"+
56045 		"\u018f\u0000\u0000\u10dd\u10de\u0005\u0018\u0000\u0000\u10de\u10f9\u0007"+
56046 		"\u0000\u0000\u0000\u10df\u10e0\u0005\u018e\u0000\u0000\u10e0\u10e1\u0005"+
56047 		"\u0018\u0000\u0000\u10e1\u10f9\u0007\u0000\u0000\u0000\u10e2\u10e3\u0005"+
56048 		"\u01eb\u0000\u0000\u10e3\u10e4\u0005\u0018\u0000\u0000\u10e4\u10f9\u0007"+
56049 		"\u0000\u0000\u0000\u10e5\u10e6\u0005\u0124\u0000\u0000\u10e6\u10e7\u0005"+
56050 		"\u0018\u0000\u0000\u10e7\u10f9\u0003b1\u0000\u10e8\u10e9\u0005\u0197\u0000"+
56051 		"\u0000\u10e9\u10ea\u0005\u0018\u0000\u0000\u10ea\u10f6\u0007\u0017\u0000"+
56052 		"\u0000\u10eb\u10ec\u0005a\u0000\u0000\u10ec\u10ed\u0005\u00ef\u0000\u0000"+
56053 		"\u10ed\u10ee\u0005\u001f\u0000\u0000\u10ee\u10f3\u0003\u025c\u012e\u0000"+
56054 		"\u10ef\u10f0\u0005%\u0000\u0000\u10f0\u10f2\u0003\u025c\u012e\u0000\u10f1"+
56055 		"\u10ef\u0001\u0000\u0000\u0000\u10f2\u10f5\u0001\u0000\u0000\u0000\u10f3"+
56056 		"\u10f1\u0001\u0000\u0000\u0000\u10f3\u10f4\u0001\u0000\u0000\u0000";
56057 	private static final String _serializedATNSegment2 =
56058 		"\u10f4\u10f7\u0001\u0000\u0000\u0000\u10f5\u10f3\u0001\u0000\u0000\u0000"+
56059 		"\u10f6\u10eb\u0001\u0000\u0000\u0000\u10f6\u10f7\u0001\u0000\u0000\u0000"+
56060 		"\u10f7\u10f9\u0001\u0000\u0000\u0000\u10f8\u10b5\u0001\u0000\u0000\u0000"+
56061 		"\u10f8\u10b8\u0001\u0000\u0000\u0000\u10f8\u10bb\u0001\u0000\u0000\u0000"+
56062 		"\u10f8\u10be\u0001\u0000\u0000\u0000\u10f8\u10c1\u0001\u0000\u0000\u0000"+
56063 		"\u10f8\u10c4\u0001\u0000\u0000\u0000\u10f8\u10c7\u0001\u0000\u0000\u0000"+
56064 		"\u10f8\u10ca\u0001\u0000\u0000\u0000\u10f8\u10d3\u0001\u0000\u0000\u0000"+
56065 		"\u10f8\u10d6\u0001\u0000\u0000\u0000\u10f8\u10dc\u0001\u0000\u0000\u0000"+
56066 		"\u10f8\u10df\u0001\u0000\u0000\u0000\u10f8\u10e2\u0001\u0000\u0000\u0000"+
56067 		"\u10f8\u10e5\u0001\u0000\u0000\u0000\u10f8\u10e8\u0001\u0000\u0000\u0000"+
56068 		"\u10f9\u025b\u0001\u0000\u0000\u0000\u10fa\u10fd\u0003b1\u0000\u10fb\u10fc"+
56069 		"\u0005g\u0000\u0000\u10fc\u10fe\u0003b1\u0000\u10fd\u10fb\u0001\u0000"+
56070 		"\u0000\u0000\u10fd\u10fe\u0001\u0000\u0000\u0000\u10fe\u025d\u0001\u0000"+
56071 		"\u0000\u0000\u10ff\u1100\u0005\u0223\u0000\u0000\u1100\u1101\u0005\u0018"+
56072 		"\u0000\u0000\u1101\u1106\u0007\u0000\u0000\u0000\u1102\u1103\u0005\u0224"+
56073 		"\u0000\u0000\u1103\u1104\u0005\u0018\u0000\u0000\u1104\u1106\u0007\u0000"+
56074 		"\u0000\u0000\u1105\u10ff\u0001\u0000\u0000\u0000\u1105\u1102\u0001\u0000"+
56075 		"\u0000\u0000\u1106\u025f\u0001\u0000\u0000\u0000\u1107\u1108\u0005\u018f"+
56076 		"\u0000\u0000\u1108\u1109\u0005\u0018\u0000\u0000\u1109\u111d\u0007\u0000"+
56077 		"\u0000\u0000\u110a\u110b\u0005\u018e\u0000\u0000\u110b\u110c\u0005\u0018"+
56078 		"\u0000\u0000\u110c\u111d\u0007\u0000\u0000\u0000\u110d\u110e\u0005\u01eb"+
56079 		"\u0000\u0000\u110e\u110f\u0005\u0018\u0000\u0000\u110f\u111d\u0007\u0000"+
56080 		"\u0000\u0000\u1110\u1111\u0005\u01a4\u0000\u0000\u1111\u1112\u0005\u0018"+
56081 		"\u0000\u0000\u1112\u111d\u0007\u0000\u0000\u0000\u1113\u1114\u0005\u019f"+
56082 		"\u0000\u0000\u1114\u1115\u0005\u0018\u0000\u0000\u1115\u111d\u0007\u0000"+
56083 		"\u0000\u0000\u1116\u1117\u0005\u0195\u0000\u0000\u1117\u1118\u0005\u0018"+
56084 		"\u0000\u0000\u1118\u111a\u0003b1\u0000\u1119\u111b\u0005\u010f\u0000\u0000"+
56085 		"\u111a\u1119\u0001\u0000\u0000\u0000\u111a\u111b\u0001\u0000\u0000\u0000"+
56086 		"\u111b\u111d\u0001\u0000\u0000\u0000\u111c\u1107\u0001\u0000\u0000\u0000"+
56087 		"\u111c\u110a\u0001\u0000\u0000\u0000\u111c\u110d\u0001\u0000\u0000\u0000"+
56088 		"\u111c\u1110\u0001\u0000\u0000\u0000\u111c\u1113\u0001\u0000\u0000\u0000"+
56089 		"\u111c\u1116\u0001\u0000\u0000\u0000\u111d\u0261\u0001\u0000\u0000\u0000"+
56090 		"\u111e\u111f\u0005\u0124\u0000\u0000\u111f\u1120\u0005\u0018\u0000\u0000"+
56091 		"\u1120\u1129\u0003b1\u0000\u1121\u1122\u0005\u01a6\u0000\u0000\u1122\u1123"+
56092 		"\u0005\u0018\u0000\u0000\u1123\u1125\u0003b1\u0000\u1124\u1126\u0005\u010f"+
56093 		"\u0000\u0000\u1125\u1124\u0001\u0000\u0000\u0000\u1125\u1126\u0001\u0000"+
56094 		"\u0000\u0000\u1126\u1129\u0001\u0000\u0000\u0000\u1127\u1129\u0003\u00d0"+
56095 		"h\u0000\u1128\u111e\u0001\u0000\u0000\u0000\u1128\u1121\u0001\u0000\u0000"+
56096 		"\u0000\u1128\u1127\u0001\u0000\u0000\u0000\u1129\u0263\u0001\u0000\u0000"+
56097 		"\u0000\u112a\u112b\u0005\u0232\u0000\u0000\u112b\u112c\u0005\u00aa\u0000"+
56098 		"\u0000\u112c\u112d\u0005\u0018\u0000\u0000\u112d\u1161\u00032\u0019\u0000"+
56099 		"\u112e\u112f\u0005\u0107\u0000\u0000\u112f\u1161\u0003\u00d4j\u0000\u1130"+
56100 		"\u1161\u0003\u026e\u0137\u0000\u1131\u1132\u0005:\u0000\u0000\u1132\u1137"+
56101 		"\u0003\u026c\u0136\u0000\u1133\u1134\u0005%\u0000\u0000\u1134\u1136\u0003"+
56102 		"\u026c\u0136\u0000\u1135\u1133\u0001\u0000\u0000\u0000\u1136\u1139\u0001"+
56103 		"\u0000\u0000\u0000\u1137\u1135\u0001\u0000\u0000\u0000\u1137\u1138\u0001"+
56104 		"\u0000\u0000\u0000\u1138\u113c\u0001\u0000\u0000\u0000\u1139\u1137\u0001"+
56105 		"\u0000\u0000\u0000\u113a\u113b\u0005M\u0000\u0000\u113b\u113d\u0003\u0294"+
56106 		"\u014a\u0000\u113c\u113a\u0001\u0000\u0000\u0000\u113c\u113d\u0001\u0000"+
56107 		"\u0000\u0000\u113d\u1161\u0001\u0000\u0000\u0000\u113e\u113f\u0005\u0232"+
56108 		"\u0000\u0000\u113f\u1140\u0005\u001f\u0000\u0000\u1140\u1145\u0003\u0268"+
56109 		"\u0134\u0000\u1141\u1142\u0005%\u0000\u0000\u1142\u1144\u0003\u0268\u0134"+
56110 		"\u0000\u1143\u1141\u0001\u0000\u0000\u0000\u1144\u1147\u0001\u0000\u0000"+
56111 		"\u0000\u1145\u1143\u0001\u0000\u0000\u0000\u1145\u1146\u0001\u0000\u0000"+
56112 		"\u0000\u1146\u1148\u0001\u0000\u0000\u0000\u1147\u1145\u0001\u0000\u0000"+
56113 		"\u0000\u1148\u1149\u0005 \u0000\u0000\u1149\u1161\u0001\u0000\u0000\u0000"+
56114 		"\u114a\u114b\u0005\u0232\u0000\u0000\u114b\u114c\u0005\u0285\u0000\u0000"+
56115 		"\u114c\u114d\u0005\u0018\u0000\u0000\u114d\u1161\u0005\u02ca\u0000\u0000"+
56116 		"\u114e\u114f\u00059\u0000\u0000\u114f\u1150\u0005\u0287\u0000\u0000\u1150"+
56117 		"\u1151\u0005a\u0000\u0000\u1151\u1152\u0005\u014d\u0000\u0000\u1152\u115c"+
56118 		"\u0003\u00d4j\u0000\u1153\u1154\u0005M\u0000\u0000\u1154\u1159\u0003\u0266"+
56119 		"\u0133\u0000\u1155\u1156\u0005%\u0000\u0000\u1156\u1158\u0003\u0266\u0133"+
56120 		"\u0000\u1157\u1155\u0001\u0000\u0000\u0000\u1158\u115b\u0001\u0000\u0000"+
56121 		"\u0000\u1159\u1157\u0001\u0000\u0000\u0000\u1159\u115a\u0001\u0000\u0000"+
56122 		"\u0000\u115a\u115d\u0001\u0000\u0000\u0000\u115b\u1159\u0001\u0000\u0000"+
56123 		"\u0000\u115c\u1153\u0001\u0000\u0000\u0000\u115c\u115d\u0001\u0000\u0000"+
56124 		"\u0000\u115d\u1161\u0001\u0000\u0000\u0000\u115e\u1161\u0005\u0288\u0000"+
56125 		"\u0000\u115f\u1161\u0005\u0286\u0000\u0000\u1160\u112a\u0001\u0000\u0000"+
56126 		"\u0000\u1160\u112e\u0001\u0000\u0000\u0000\u1160\u1130\u0001\u0000\u0000"+
56127 		"\u0000\u1160\u1131\u0001\u0000\u0000\u0000\u1160\u113e\u0001\u0000\u0000"+
56128 		"\u0000\u1160\u114a\u0001\u0000\u0000\u0000\u1160\u114e\u0001\u0000\u0000"+
56129 		"\u0000\u1160\u115e\u0001\u0000\u0000\u0000\u1160\u115f\u0001\u0000\u0000"+
56130 		"\u0000\u1161\u0265\u0001\u0000\u0000\u0000\u1162\u1163\u0005\u0281\u0000"+
56131 		"\u0000\u1163\u1164\u0005\u0018\u0000\u0000\u1164\u116f\u00076\u0000\u0000"+
56132 		"\u1165\u1166\u0005\u027f\u0000\u0000\u1166\u116c\u0005\u0018\u0000\u0000"+
56133 		"\u1167\u116d\u0003\u026a\u0135\u0000\u1168\u1169\u0005\u0280\u0000\u0000"+
56134 		"\u1169\u116a\u0005\u0018\u0000\u0000\u116a\u116d\u00032\u0019\u0000\u116b"+
56135 		"\u116d\u00077\u0000\u0000\u116c\u1167\u0001\u0000\u0000\u0000\u116c\u1168"+
56136 		"\u0001\u0000\u0000\u0000\u116c\u116b\u0001\u0000\u0000\u0000\u116d\u116f"+
56137 		"\u0001\u0000\u0000\u0000\u116e\u1162\u0001\u0000\u0000\u0000\u116e\u1165"+
56138 		"\u0001\u0000\u0000\u0000\u116f\u0267\u0001\u0000\u0000\u0000\u1170\u1171"+
56139 		"\u0005\u01f3\u0000\u0000\u1171\u1172\u0005\u0018\u0000\u0000\u1172\u1173"+
56140 		"\u0005\u02cb\u0000\u0000\u1173\u117e\u00078\u0000\u0000\u1174\u1175\u0005"+
56141 		"\u0272\u0000\u0000\u1175\u1176\u0005\u0018\u0000\u0000\u1176\u117e\u0005"+
56142 		"\u02ca\u0000\u0000\u1177\u1178\u0005\u027f\u0000\u0000\u1178\u117b\u0005"+
56143 		"\u0018\u0000\u0000\u1179\u117c\u0005\u02ca\u0000\u0000\u117a\u117c\u0003"+
56144 		"\u026a\u0135\u0000\u117b\u1179\u0001\u0000\u0000\u0000\u117b\u117a\u0001"+
56145 		"\u0000\u0000\u0000\u117c\u117e\u0001\u0000\u0000\u0000\u117d\u1170\u0001"+
56146 		"\u0000\u0000\u0000\u117d\u1174\u0001\u0000\u0000\u0000\u117d\u1177\u0001"+
56147 		"\u0000\u0000\u0000\u117e\u0269\u0001\u0000\u0000\u0000\u117f\u1188\u0005"+
56148 		"\u02ca\u0000\u0000\u1180\u1181\u0005\u027e\u0000\u0000\u1181\u1182\u0005"+
56149 		"\u001f\u0000\u0000\u1182\u1183\u0003\u00d4j\u0000\u1183\u1184\u0005\u0018"+
56150 		"\u0000\u0000\u1184\u1185\u0005\u02ca\u0000\u0000\u1185\u1186\u0005 \u0000"+
56151 		"\u0000\u1186\u1188\u0001\u0000\u0000\u0000\u1187\u117f\u0001\u0000\u0000"+
56152 		"\u0000\u1187\u1180\u0001\u0000\u0000\u0000\u1188\u026b\u0001\u0000\u0000"+
56153 		"\u0000\u1189\u11b5\u0003\u0276\u013b\u0000\u118a\u11b5\u0003\u0278\u013c"+
56154 		"\u0000\u118b\u11b5\u0003\u027a\u013d\u0000\u118c\u11b5\u0003\u027c\u013e"+
56155 		"\u0000\u118d\u118e\u0005\u01ef\u0000\u0000\u118e\u118f\u0005\u0018\u0000"+
56156 		"\u0000\u118f\u11b5\u0007,\u0000\u0000\u1190\u11b5\u0003\u0280\u0140\u0000"+
56157 		"\u1191\u1192\u0005\u027d\u0000\u0000\u1192\u11b5\u0007\u0000\u0000\u0000"+
56158 		"\u1193\u1194\u0005\u016e\u0000\u0000\u1194\u11b5\u00079\u0000\u0000\u1195"+
56159 		"\u11b5\u0007:\u0000\u0000\u1196\u11b5\u0007;\u0000\u0000\u1197\u11b5\u0007"+
56160 		"<\u0000\u0000\u1198\u1199\u0005\u0292\u0000\u0000\u1199\u119a\u0005\u0018"+
56161 		"\u0000\u0000\u119a\u11b5\u0007=\u0000\u0000\u119b\u11b5\u0003\u0282\u0141"+
56162 		"\u0000\u119c\u119d\u0005\u0117\u0000\u0000\u119d\u119e\u0005\u001f\u0000"+
56163 		"\u0000\u119e\u119f\u0003\u01fa\u00fd\u0000\u119f\u11a0\u0005 \u0000\u0000"+
56164 		"\u11a0\u11b5\u0001\u0000\u0000\u0000\u11a1\u11a2\u00053\u0000\u0000\u11a2"+
56165 		"\u11a3\u0005\u00cc\u0000\u0000\u11a3\u11a4\u0005:\u0000\u0000\u11a4\u11b5"+
56166 		"\u0005\u0276\u0000\u0000\u11a5\u11a6\u0005\u0273\u0000\u0000\u11a6\u11b5"+
56167 		"\u0007\u0000\u0000\u0000\u11a7\u11a8\u0005\u01e7\u0000\u0000\u11a8\u11b5"+
56168 		"\u0007>\u0000\u0000\u11a9\u11b5\u0003\u0284\u0142\u0000\u11aa\u11b5\u0003"+
56169 		"\u028a\u0145\u0000\u11ab\u11b5\u0003\u0290\u0148\u0000\u11ac\u11b5\u0003"+
56170 		"\u028e\u0147\u0000\u11ad\u11b5\u0003\u028c\u0146\u0000\u11ae\u11b5\u0003"+
56171 		"\u0292\u0149\u0000\u11af\u11b5\u0003\u0294\u014a\u0000\u11b0\u11b1\u0005"+
56172 		"\u0271\u0000\u0000\u11b1\u11b5\u0007\u0000\u0000\u0000\u11b2\u11b3\u0005"+
56173 		"\u0270\u0000\u0000\u11b3\u11b5\u0007\u0000\u0000\u0000\u11b4\u1189\u0001"+
56174 		"\u0000\u0000\u0000\u11b4\u118a\u0001\u0000\u0000\u0000\u11b4\u118b\u0001"+
56175 		"\u0000\u0000\u0000\u11b4\u118c\u0001\u0000\u0000\u0000\u11b4\u118d\u0001"+
56176 		"\u0000\u0000\u0000\u11b4\u1190\u0001\u0000\u0000\u0000\u11b4\u1191\u0001"+
56177 		"\u0000\u0000\u0000\u11b4\u1193\u0001\u0000\u0000\u0000\u11b4\u1195\u0001"+
56178 		"\u0000\u0000\u0000\u11b4\u1196\u0001\u0000\u0000\u0000\u11b4\u1197\u0001"+
56179 		"\u0000\u0000\u0000\u11b4\u1198\u0001\u0000\u0000\u0000\u11b4\u119b\u0001"+
56180 		"\u0000\u0000\u0000\u11b4\u119c\u0001\u0000\u0000\u0000\u11b4\u11a1\u0001"+
56181 		"\u0000\u0000\u0000\u11b4\u11a5\u0001\u0000\u0000\u0000\u11b4\u11a7\u0001"+
56182 		"\u0000\u0000\u0000\u11b4\u11a9\u0001\u0000\u0000\u0000\u11b4\u11aa\u0001"+
56183 		"\u0000\u0000\u0000\u11b4\u11ab\u0001\u0000\u0000\u0000\u11b4\u11ac\u0001"+
56184 		"\u0000\u0000\u0000\u11b4\u11ad\u0001\u0000\u0000\u0000\u11b4\u11ae\u0001"+
56185 		"\u0000\u0000\u0000\u11b4\u11af\u0001\u0000\u0000\u0000\u11b4\u11b0\u0001"+
56186 		"\u0000\u0000\u0000\u11b4\u11b2\u0001\u0000\u0000\u0000\u11b5\u026d\u0001"+
56187 		"\u0000\u0000\u0000\u11b6\u11bb\u0003\u0274\u013a\u0000\u11b7\u11bb\u0003"+
56188 		"\u01fc\u00fe\u0000\u11b8\u11bb\u0003\u0270\u0138\u0000\u11b9\u11bb\u0003"+
56189 		"\u0272\u0139\u0000\u11ba\u11b6\u0001\u0000\u0000\u0000\u11ba\u11b7\u0001"+
56190 		"\u0000\u0000\u0000\u11ba\u11b8\u0001\u0000\u0000\u0000\u11ba\u11b9\u0001"+
56191 		"\u0000\u0000\u0000\u11bb\u026f\u0001\u0000\u0000\u0000\u11bc\u11bd\u0005"+
56192 		"9\u0000\u0000\u11bd\u11be\u0005\u01fc\u0000\u0000\u11be\u11c3\u0003\u00d4"+
56193 		"j\u0000\u11bf\u11c0\u0005\u01fa\u0000\u0000\u11c0\u11c4\u0005\u0117\u0000"+
56194 		"\u0000\u11c1\u11c2\u0005\u01fa\u0000\u0000\u11c2\u11c4\u0005\u01fb\u0000"+
56195 		"\u0000\u11c3\u11bf\u0001\u0000\u0000\u0000\u11c3\u11c1\u0001\u0000\u0000"+
56196 		"\u0000\u11c3\u11c4\u0001\u0000\u0000\u0000\u11c4\u11d3\u0001\u0000\u0000"+
56197 		"\u0000\u11c5\u11c6\u0005\u022d\u0000\u0000\u11c6\u11c7\u0005\u01fc\u0000"+
56198 		"\u0000\u11c7\u11d3\u0003\u00d4j\u0000\u11c8\u11c9\u0005\u0232\u0000\u0000"+
56199 		"\u11c9\u11ca\u0005\u01fc\u0000\u0000\u11ca\u11cb\u0003\u00d4j\u0000\u11cb"+
56200 		"\u11cc\u0003\u0272\u0139\u0000\u11cc\u11d3\u0001\u0000\u0000\u0000\u11cd"+
56201 		"\u11d3\u0005\u009a\u0000\u0000\u11ce\u11cf\u0005\u00aa\u0000\u0000\u11cf"+
56202 		"\u11d0\u0005\u0018\u0000\u0000\u11d0\u11d3\u0003\u00d4j\u0000\u11d1\u11d3"+
56203 		"\u0007?\u0000\u0000\u11d2\u11bc\u0001\u0000\u0000\u0000\u11d2\u11c5\u0001"+
56204 		"\u0000\u0000\u0000\u11d2\u11c8\u0001\u0000\u0000\u0000\u11d2\u11cd\u0001"+
56205 		"\u0000\u0000\u0000\u11d2\u11ce\u0001\u0000\u0000\u0000\u11d2\u11d1\u0001"+
56206 		"\u0000\u0000\u0000\u11d3\u0271\u0001\u0000\u0000\u0000\u11d4\u11d7\u0007"+
56207 		"@\u0000\u0000\u11d5\u11d7\u0007;\u0000\u0000\u11d6\u11d4\u0001\u0000\u0000"+
56208 		"\u0000\u11d6\u11d5\u0001\u0000\u0000\u0000\u11d7\u0273\u0001\u0000\u0000"+
56209 		"\u0000\u11d8\u11d9\u00059\u0000\u0000\u11d9\u11da\u0005\u0172\u0000\u0000"+
56210 		"\u11da\u11df\u0003\u01fc\u00fe\u0000\u11db\u11dc\u0005%\u0000\u0000\u11dc"+
56211 		"\u11de\u0003\u01fc\u00fe\u0000\u11dd\u11db\u0001\u0000\u0000\u0000\u11de"+
56212 		"\u11e1\u0001\u0000\u0000\u0000\u11df\u11dd\u0001\u0000\u0000\u0000\u11df"+
56213 		"\u11e0\u0001\u0000\u0000\u0000\u11e0\u11e5\u0001\u0000\u0000\u0000\u11e1"+
56214 		"\u11df\u0001\u0000\u0000\u0000\u11e2\u11e3\u0005g\u0000\u0000\u11e3\u11e4"+
56215 		"\u0005\u01fc\u0000\u0000\u11e4\u11e6\u0003\u00d4j\u0000\u11e5\u11e2\u0001"+
56216 		"\u0000\u0000\u0000\u11e5\u11e6\u0001\u0000\u0000\u0000\u11e6\u11f9\u0001"+
56217 		"\u0000\u0000\u0000\u11e7\u11e8\u00059\u0000\u0000\u11e8\u11e9\u0005\u0186"+
56218 		"\u0000\u0000\u11e9\u11ea\u0005\u0172\u0000\u0000\u11ea\u11ef\u0003\u01fc"+
56219 		"\u00fe\u0000\u11eb\u11ec\u0005%\u0000\u0000\u11ec\u11ee\u0003\u01fc\u00fe"+
56220 		"\u0000\u11ed\u11eb\u0001\u0000\u0000\u0000\u11ee\u11f1\u0001\u0000\u0000"+
56221 		"\u0000\u11ef\u11ed\u0001\u0000\u0000\u0000\u11ef\u11f0\u0001\u0000\u0000"+
56222 		"\u0000\u11f0\u11f9\u0001\u0000\u0000\u0000\u11f1\u11ef\u0001\u0000\u0000"+
56223 		"\u0000\u11f2\u11f3\u0005\u022d\u0000\u0000\u11f3\u11f4\u0005\u0172\u0000"+
56224 		"\u0000\u11f4\u11f9\u0005\u02ca\u0000\u0000\u11f5\u11f6\u0005\u0232\u0000"+
56225 		"\u0000\u11f6\u11f7\u0005\u0172\u0000\u0000\u11f7\u11f9\u0003\u01fc\u00fe"+
56226 		"\u0000\u11f8\u11d8\u0001\u0000\u0000\u0000\u11f8\u11e7\u0001\u0000\u0000"+
56227 		"\u0000\u11f8\u11f2\u0001\u0000\u0000\u0000\u11f8\u11f5\u0001\u0000\u0000"+
56228 		"\u0000\u11f9\u0275\u0001\u0000\u0000\u0000\u11fa\u11fb\u0005\u0233\u0000"+
56229 		"\u0000\u11fb\u11fc\u0005\u0018\u0000\u0000\u11fc\u1203\u0007\u0000\u0000"+
56230 		"\u0000\u11fd\u11fe\u0005\u001f\u0000\u0000\u11fe\u11ff\u0005\u0234\u0000"+
56231 		"\u0000\u11ff\u1200\u0005\u0018\u0000\u0000\u1200\u1201\u0003\u00d4j\u0000"+
56232 		"\u1201\u1202\u0005 \u0000\u0000\u1202\u1204\u0001\u0000\u0000\u0000\u1203"+
56233 		"\u11fd\u0001\u0000\u0000\u0000\u1203\u1204\u0001\u0000\u0000\u0000\u1204"+
56234 		"\u0277\u0001\u0000\u0000\u0000\u1205\u1206\u0005\u026f\u0000\u0000\u1206"+
56235 		"\u121a\u0007\u0000\u0000\u0000\u1207\u1211\u0005\u026d\u0000\u0000\u1208"+
56236 		"\u1212\u0005b\u0000\u0000\u1209\u120f\u0005a\u0000\u0000\u120a\u120b\u0005"+
56237 		"\u001f\u0000\u0000\u120b\u120c\u0005\u026e\u0000\u0000\u120c\u120d\u0005"+
56238 		"\u0018\u0000\u0000\u120d\u120e\u0007\u0000\u0000\u0000\u120e\u1210\u0005"+
56239 		" \u0000\u0000\u120f\u120a\u0001\u0000\u0000\u0000\u120f\u1210\u0001\u0000"+
56240 		"\u0000\u0000\u1210\u1212\u0001\u0000\u0000\u0000\u1211\u1208\u0001\u0000"+
56241 		"\u0000\u0000\u1211\u1209\u0001\u0000\u0000\u0000\u1212\u121a\u0001\u0000"+
56242 		"\u0000\u0000\u1213\u1214\u0005\u026c\u0000\u0000\u1214\u121a\u0007\u0000"+
56243 		"\u0000\u0000\u1215\u1216\u0005\u026b\u0000\u0000\u1216\u121a\u0007\u0000"+
56244 		"\u0000\u0000\u1217\u1218\u0005\u026a\u0000\u0000\u1218\u121a\u0007\u0000"+
56245 		"\u0000\u0000\u1219\u1205\u0001\u0000\u0000\u0000\u1219\u1207\u0001\u0000"+
56246 		"\u0000\u0000\u1219\u1213\u0001\u0000\u0000\u0000\u1219\u1215\u0001\u0000"+
56247 		"\u0000\u0000\u1219\u1217\u0001\u0000\u0000\u0000\u121a\u0279\u0001\u0000"+
56248 		"\u0000\u0000\u121b\u121c\u0005\u0268\u0000\u0000\u121c\u121d\u0005\u001f"+
56249 		"\u0000\u0000\u121d\u121e\u0005\u0269\u0000\u0000\u121e\u121f\u0005\u0018"+
56250 		"\u0000\u0000\u121f\u1220\u0007\u0000\u0000\u0000\u1220\u1221\u0005 \u0000"+
56251 		"\u0000\u1221\u027b\u0001\u0000\u0000\u0000\u1222\u1236\u0005\u0267\u0000"+
56252 		"\u0000\u1223\u1224\u0005\u0018\u0000\u0000\u1224\u1237\u0005b\u0000\u0000"+
56253 		"\u1225\u1226\u0005\u0018\u0000\u0000\u1226\u1228\u0005a\u0000\u0000\u1227"+
56254 		"\u1225\u0001\u0000\u0000\u0000\u1227\u1228\u0001\u0000\u0000\u0000\u1228"+
56255 		"\u1234\u0001\u0000\u0000\u0000\u1229\u122a\u0005\u001f\u0000\u0000\u122a"+
56256 		"\u122f\u0003\u027e\u013f\u0000\u122b\u122c\u0005%\u0000\u0000\u122c\u122e"+
56257 		"\u0003\u027e\u013f\u0000\u122d\u122b\u0001\u0000\u0000\u0000\u122e\u1231"+
56258 		"\u0001\u0000\u0000\u0000\u122f\u122d\u0001\u0000\u0000\u0000\u122f\u1230"+
56259 		"\u0001\u0000\u0000\u0000\u1230\u1232\u0001\u0000\u0000\u0000\u1231\u122f"+
56260 		"\u0001\u0000\u0000\u0000\u1232\u1233\u0005 \u0000\u0000\u1233\u1235\u0001"+
56261 		"\u0000\u0000\u0000\u1234\u1229\u0001\u0000\u0000\u0000\u1234\u1235\u0001"+
56262 		"\u0000\u0000\u0000\u1235\u1237\u0001\u0000\u0000\u0000\u1236\u1223\u0001"+
56263 		"\u0000\u0000\u0000\u1236\u1227\u0001\u0000\u0000\u0000\u1237\u027d\u0001"+
56264 		"\u0000\u0000\u0000\u1238\u1239\u0005\u0266\u0000\u0000\u1239\u123a\u0005"+
56265 		"\u0018\u0000\u0000\u123a\u1240\u0007\u0000\u0000\u0000\u123b\u123c\u0005"+
56266 		"\u0265\u0000\u0000\u123c\u123d\u0005\u0018\u0000\u0000\u123d\u123e\u0005"+
56267 		"\u02cb\u0000\u0000\u123e\u1240\u0007A\u0000\u0000\u123f\u1238\u0001\u0000"+
56268 		"\u0000\u0000\u123f\u123b\u0001\u0000\u0000\u0000\u1240\u027f\u0001\u0000"+
56269 		"\u0000\u0000\u1241\u1242\u0005\u0263\u0000\u0000\u1242\u1246\u0007\u0000"+
56270 		"\u0000\u0000\u1243\u1244\u0005\u0261\u0000\u0000\u1244\u1246\u0007B\u0000"+
56271 		"\u0000\u1245\u1241\u0001\u0000\u0000\u0000\u1245\u1243\u0001\u0000\u0000"+
56272 		"\u0000\u1246\u0281\u0001\u0000\u0000\u0000\u1247\u1248\u0005\u01fe\u0000"+
56273 		"\u0000\u1248\u125b\u0007\u0000\u0000\u0000\u1249\u124a\u0005\u01ff\u0000"+
56274 		"\u0000\u124a\u125b\u0007\u0000\u0000\u0000\u124b\u124c\u0005\u0289\u0000"+
56275 		"\u0000\u124c\u124d\u0005\u0018\u0000\u0000\u124d\u125b\u0005\u02ca\u0000"+
56276 		"\u0000\u124e\u124f\u0005\u028a\u0000\u0000\u124f\u1250\u0005\u0018\u0000"+
56277 		"\u0000\u1250\u125b\u0005\u02ca\u0000\u0000\u1251\u1252\u0005\u028c\u0000"+
56278 		"\u0000\u1252\u1253\u0005\u0018\u0000\u0000\u1253\u125b\u0007\u0000\u0000"+
56279 		"\u0000\u1254\u1255\u0005\u028d\u0000\u0000\u1255\u1256\u0005\u0018\u0000"+
56280 		"\u0000\u1256\u125b\u0007\u0000\u0000\u0000\u1257\u1258\u0005\u028e\u0000"+
56281 		"\u0000\u1258\u1259\u0005\u0018\u0000\u0000\u1259\u125b\u0005\u02cb\u0000"+
56282 		"\u0000\u125a\u1247\u0001\u0000\u0000\u0000\u125a\u1249\u0001\u0000\u0000"+
56283 		"\u0000\u125a\u124b\u0001\u0000\u0000\u0000\u125a\u124e\u0001\u0000\u0000"+
56284 		"\u0000\u125a\u1251\u0001\u0000\u0000\u0000\u125a\u1254\u0001\u0000\u0000"+
56285 		"\u0000\u125a\u1257\u0001\u0000\u0000\u0000\u125b\u0283\u0001\u0000\u0000"+
56286 		"\u0000\u125c\u1270\u0005\u0260\u0000\u0000\u125d\u125e\u0005\u0018\u0000"+
56287 		"\u0000\u125e\u1271\u0005b\u0000\u0000\u125f\u1260\u0005\u0018\u0000\u0000"+
56288 		"\u1260\u1262\u0005a\u0000\u0000\u1261\u125f\u0001\u0000\u0000\u0000\u1261"+
56289 		"\u1262\u0001\u0000\u0000\u0000\u1262\u126e\u0001\u0000\u0000\u0000\u1263"+
56290 		"\u1264\u0005\u001f\u0000\u0000\u1264\u1269\u0003\u0286\u0143\u0000\u1265"+
56291 		"\u1266\u0005%\u0000\u0000\u1266\u1268\u0003\u0286\u0143\u0000\u1267\u1265"+
56292 		"\u0001\u0000\u0000\u0000\u1268\u126b\u0001\u0000\u0000\u0000\u1269\u1267"+
56293 		"\u0001\u0000\u0000\u0000\u1269\u126a\u0001\u0000\u0000\u0000\u126a\u126c"+
56294 		"\u0001\u0000\u0000\u0000\u126b\u1269\u0001\u0000\u0000\u0000\u126c\u126d"+
56295 		"\u0005 \u0000\u0000\u126d\u126f\u0001\u0000\u0000\u0000\u126e\u1263\u0001"+
56296 		"\u0000\u0000\u0000\u126e\u126f\u0001\u0000\u0000\u0000\u126f\u1271\u0001"+
56297 		"\u0000\u0000\u0000\u1270\u125d\u0001\u0000\u0000\u0000\u1270\u1261\u0001"+
56298 		"\u0000\u0000\u0000\u1271\u0285\u0001\u0000\u0000\u0000\u1272\u1273\u0005"+
56299 		"\u025f\u0000\u0000\u1273\u1274\u0005\u0018\u0000\u0000\u1274\u129f\u0007"+
56300 		";\u0000\u0000\u1275\u1276\u0005\u025c\u0000\u0000\u1276\u1277\u0005\u0018"+
56301 		"\u0000\u0000\u1277\u1278\u0005\u001f\u0000\u0000\u1278\u1279\u0005\u025e"+
56302 		"\u0000\u0000\u1279\u127a\u0005\u0018\u0000\u0000\u127a\u127b\u0005\u02cb"+
56303 		"\u0000\u0000\u127b\u129f\u0005 \u0000\u0000\u127c\u127d\u0005\u025b\u0000"+
56304 		"\u0000\u127d\u127e\u0005\u0018\u0000\u0000\u127e\u129f\u0005\u02cb\u0000"+
56305 		"\u0000\u127f\u1280\u0005\u025a\u0000\u0000\u1280\u1281\u0005\u0018\u0000"+
56306 		"\u0000\u1281\u129f\u0005\u02cb\u0000\u0000\u1282\u1283\u0005\u0259\u0000"+
56307 		"\u0000\u1283\u1284\u0005\u0018\u0000\u0000\u1284\u129f\u0005\u02cb\u0000"+
56308 		"\u0000\u1285\u1286\u0005\u0258\u0000\u0000\u1286\u1287\u0005\u0018\u0000"+
56309 		"\u0000\u1287\u129f\u0007C\u0000\u0000\u1288\u1289\u0005\u0257\u0000\u0000"+
56310 		"\u1289\u128a\u0005\u0018\u0000\u0000\u128a\u129f\u0007D\u0000\u0000\u128b"+
56311 		"\u128c\u0005\u0256\u0000\u0000\u128c\u128d\u0005\u0018\u0000\u0000\u128d"+
56312 		"\u129f\u0005\u02cb\u0000\u0000\u128e\u128f\u0005\u0255\u0000\u0000\u128f"+
56313 		"\u1290\u0005\u0018\u0000\u0000\u1290\u129f\u0007\u0000\u0000\u0000\u1291"+
56314 		"\u1292\u0005\u0254\u0000\u0000\u1292\u1293\u0005\u0018\u0000\u0000\u1293"+
56315 		"\u1294\u0005\u001f\u0000\u0000\u1294\u1299\u0003\u0288\u0144\u0000\u1295"+
56316 		"\u1296\u0005%\u0000\u0000\u1296\u1298\u0003\u0288\u0144\u0000\u1297\u1295"+
56317 		"\u0001\u0000\u0000\u0000\u1298\u129b\u0001\u0000\u0000\u0000\u1299\u1297"+
56318 		"\u0001\u0000\u0000\u0000\u1299\u129a\u0001\u0000\u0000\u0000\u129a\u129c"+
56319 		"\u0001\u0000\u0000\u0000\u129b\u1299\u0001\u0000\u0000\u0000\u129c\u129d"+
56320 		"\u0005 \u0000\u0000\u129d\u129f\u0001\u0000\u0000\u0000\u129e\u1272\u0001"+
56321 		"\u0000\u0000\u0000\u129e\u1275\u0001\u0000\u0000\u0000\u129e\u127c\u0001"+
56322 		"\u0000\u0000\u0000\u129e\u127f\u0001\u0000\u0000\u0000\u129e\u1282\u0001"+
56323 		"\u0000\u0000\u0000\u129e\u1285\u0001\u0000\u0000\u0000\u129e\u1288\u0001"+
56324 		"\u0000\u0000\u0000\u129e\u128b\u0001\u0000\u0000\u0000\u129e\u128e\u0001"+
56325 		"\u0000\u0000\u0000\u129e\u1291\u0001\u0000\u0000\u0000\u129f\u0287\u0001"+
56326 		"\u0000\u0000\u0000\u12a0\u12a1\u0005\u0252\u0000\u0000\u12a1\u12a2\u0005"+
56327 		"\u0018\u0000\u0000\u12a2\u12a3\u0005\u02cb\u0000\u0000\u12a3\u12ae\u0007"+
56328 		"E\u0000\u0000\u12a4\u12a5\u0005\u0253\u0000\u0000\u12a5\u12a6\u0005\u0018"+
56329 		"\u0000\u0000\u12a6\u12ae\u0005\u02cb\u0000\u0000\u12a7\u12a8\u0005\u0251"+
56330 		"\u0000\u0000\u12a8\u12a9\u0005\u0018\u0000\u0000\u12a9\u12ae\u0005\u02cb"+
56331 		"\u0000\u0000\u12aa\u12ab\u0005\u0250\u0000\u0000\u12ab\u12ac\u0005\u0018"+
56332 		"\u0000\u0000\u12ac\u12ae\u0005\u02cb\u0000\u0000\u12ad\u12a0\u0001\u0000"+
56333 		"\u0000\u0000\u12ad\u12a4\u0001\u0000\u0000\u0000\u12ad\u12a7\u0001\u0000"+
56334 		"\u0000\u0000\u12ad\u12aa\u0001\u0000\u0000\u0000\u12ae\u0289\u0001\u0000"+
56335 		"\u0000\u0000\u12af\u12b0\u0005\u024f\u0000\u0000\u12b0\u12b6\u0007F\u0000"+
56336 		"\u0000\u12b1\u12b2\u0005\u024d\u0000\u0000\u12b2\u12b6\u0007\u0000\u0000"+
56337 		"\u0000\u12b3\u12b4\u0005\u024b\u0000\u0000\u12b4\u12b6\u0007G\u0000\u0000"+
56338 		"\u12b5\u12af\u0001\u0000\u0000\u0000\u12b5\u12b1\u0001\u0000\u0000\u0000"+
56339 		"\u12b5\u12b3\u0001\u0000\u0000\u0000\u12b6\u028b\u0001\u0000\u0000\u0000"+
56340 		"\u12b7\u12b8\u0005\u024a\u0000\u0000\u12b8\u12cd\u0007\u0000\u0000\u0000"+
56341 		"\u12b9\u12ba\u0005\u0249\u0000\u0000\u12ba\u12cd\u0007\u0000\u0000\u0000"+
56342 		"\u12bb\u12bc\u0005\u0248\u0000\u0000\u12bc\u12cd\u0007\u0000\u0000\u0000"+
56343 		"\u12bd\u12be\u0005\u0247\u0000\u0000\u12be\u12cd\u0007\u0000\u0000\u0000"+
56344 		"\u12bf\u12c0\u0005\u0246\u0000\u0000\u12c0\u12cd\u0007\u0000\u0000\u0000"+
56345 		"\u12c1\u12c2\u0005\u0245\u0000\u0000\u12c2\u12c3\u0005\u0018\u0000\u0000"+
56346 		"\u12c3\u12cd\u0005\u02cb\u0000\u0000\u12c4\u12c5\u0005\u0244\u0000\u0000"+
56347 		"\u12c5\u12cd\u0007\u0000\u0000\u0000\u12c6\u12c7\u0005\u0243\u0000\u0000"+
56348 		"\u12c7\u12cd\u0007\u0000\u0000\u0000\u12c8\u12c9\u0005\u0242\u0000\u0000"+
56349 		"\u12c9\u12cd\u0007\u0000\u0000\u0000\u12ca\u12cb\u0005\u0241\u0000\u0000"+
56350 		"\u12cb\u12cd\u0007\u0000\u0000\u0000\u12cc\u12b7\u0001\u0000\u0000\u0000"+
56351 		"\u12cc\u12b9\u0001\u0000\u0000\u0000\u12cc\u12bb\u0001\u0000\u0000\u0000"+
56352 		"\u12cc\u12bd\u0001\u0000\u0000\u0000\u12cc\u12bf\u0001\u0000\u0000\u0000"+
56353 		"\u12cc\u12c1\u0001\u0000\u0000\u0000\u12cc\u12c4\u0001\u0000\u0000\u0000"+
56354 		"\u12cc\u12c6\u0001\u0000\u0000\u0000\u12cc\u12c8\u0001\u0000\u0000\u0000"+
56355 		"\u12cc\u12ca\u0001\u0000\u0000\u0000\u12cd\u028d\u0001\u0000\u0000\u0000"+
56356 		"\u12ce\u12cf\u0005\u0240\u0000\u0000\u12cf\u12d6\u0007\u0000\u0000\u0000"+
56357 		"\u12d0\u12d1\u0005\u023f\u0000\u0000\u12d1\u12d6\u0007\u0000\u0000\u0000"+
56358 		"\u12d2\u12d3\u0005\u023e\u0000\u0000\u12d3\u12d4\u0005\u0018\u0000\u0000"+
56359 		"\u12d4\u12d6\u0007\u0000\u0000\u0000\u12d5\u12ce\u0001\u0000\u0000\u0000"+
56360 		"\u12d5\u12d0\u0001\u0000\u0000\u0000\u12d5\u12d2\u0001\u0000\u0000\u0000"+
56361 		"\u12d6\u028f\u0001\u0000\u0000\u0000\u12d7\u12de\u0005\u023d\u0000\u0000"+
56362 		"\u12d8\u12de\u0005\u023c\u0000\u0000\u12d9\u12de\u0005\u023b\u0000\u0000"+
56363 		"\u12da\u12de\u0005\u023a\u0000\u0000\u12db\u12dc\u0005\u0239\u0000\u0000"+
56364 		"\u12dc\u12de\u0007\u0000\u0000\u0000\u12dd\u12d7\u0001\u0000\u0000\u0000"+
56365 		"\u12dd\u12d8\u0001\u0000\u0000\u0000\u12dd\u12d9\u0001\u0000\u0000\u0000"+
56366 		"\u12dd\u12da\u0001\u0000\u0000\u0000\u12dd\u12db\u0001\u0000\u0000\u0000"+
56367 		"\u12de\u0291\u0001\u0000\u0000\u0000\u12df\u12e0\u0005\u0237\u0000\u0000"+
56368 		"\u12e0\u12e1\u0005\u0018\u0000\u0000\u12e1\u12e2\u0005\u02cb\u0000\u0000"+
56369 		"\u12e2\u12e3\u0007H\u0000\u0000\u12e3\u0293\u0001\u0000\u0000\u0000\u12e4"+
56370 		"\u12e5\u0005\u007f\u0000\u0000\u12e5\u12e6\u0005\u021a\u0000\u0000\u12e6"+
56371 		"\u12e8\u0005\u02cb\u0000\u0000\u12e7\u12e9\u0005\u0238\u0000\u0000\u12e8"+
56372 		"\u12e7\u0001\u0000\u0000\u0000\u12e8\u12e9\u0001\u0000\u0000\u0000\u12e9"+
56373 		"\u12ee\u0001\u0000\u0000\u0000\u12ea\u12eb\u0005\u007f\u0000\u0000\u12eb"+
56374 		"\u12ee\u0005\u0235\u0000\u0000\u12ec\u12ee\u0005\u0236\u0000\u0000\u12ed"+
56375 		"\u12e4\u0001\u0000\u0000\u0000\u12ed\u12ea\u0001\u0000\u0000\u0000\u12ed"+
56376 		"\u12ec\u0001\u0000\u0000\u0000\u12ee\u0295\u0001\u0000\u0000\u0000\u12ef"+
56377 		"\u12f0\u0005\u001f\u0000\u0000\u12f0\u12f5\u0003D\"\u0000\u12f1\u12f2"+
56378 		"\u0005%\u0000\u0000\u12f2\u12f4\u0003D\"\u0000\u12f3\u12f1\u0001\u0000"+
56379 		"\u0000\u0000\u12f4\u12f7\u0001\u0000\u0000\u0000\u12f5\u12f3\u0001\u0000"+
56380 		"\u0000\u0000\u12f5\u12f6\u0001\u0000\u0000\u0000\u12f6\u12f8\u0001\u0000"+
56381 		"\u0000\u0000\u12f7\u12f5\u0001\u0000\u0000\u0000\u12f8\u12f9\u0005 \u0000"+
56382 		"\u0000\u12f9\u0297\u0001\u0000\u0000\u0000\u12fa\u12fb\u0005\u001f\u0000"+
56383 		"\u0000\u12fb\u1300\u0003\u029a\u014d\u0000\u12fc\u12fd\u0005%\u0000\u0000"+
56384 		"\u12fd\u12ff\u0003\u029a\u014d\u0000\u12fe\u12fc\u0001\u0000\u0000\u0000"+
56385 		"\u12ff\u1302\u0001\u0000\u0000\u0000\u1300\u12fe\u0001\u0000\u0000\u0000"+
56386 		"\u1300\u1301\u0001\u0000\u0000\u0000\u1301\u1303\u0001\u0000\u0000\u0000"+
56387 		"\u1302\u1300\u0001\u0000\u0000\u0000\u1303\u1304\u0005 \u0000\u0000\u1304"+
56388 		"\u0299\u0001\u0000\u0000\u0000\u1305\u1306\u00059\u0000\u0000\u1306\u1307"+
56389 		"\u0005\u016d\u0000\u0000\u1307\u130c\u0003D\"\u0000\u1308\u1309\u0005"+
56390 		"4\u0000\u0000\u1309\u130a\u0005\u016d\u0000\u0000\u130a\u130c\u0003D\""+
56391 		"\u0000\u130b\u1305\u0001\u0000\u0000\u0000\u130b\u1308\u0001\u0000\u0000"+
56392 		"\u0000\u130c\u029b\u0001\u0000\u0000\u0000\u130d\u1315\u00034\u001a\u0000"+
56393 		"\u130e\u130f\u0005\u0293\u0000\u0000\u130f\u1315\u0003\u00d4j\u0000\u1310"+
56394 		"\u1311\u00034\u001a\u0000\u1311\u1312\u0005\u0293\u0000\u0000\u1312\u1313"+
56395 		"\u0003\u00d4j\u0000\u1313\u1315\u0001\u0000\u0000\u0000\u1314\u130d\u0001"+
56396 		"\u0000\u0000\u0000\u1314\u130e\u0001\u0000\u0000\u0000\u1314\u1310\u0001"+
56397 		"\u0000\u0000\u0000\u1315\u029d\u0001\u0000\u0000\u0000\u1316\u131c\u0003"+
56398 		"\u00f2y\u0000\u1317\u131c\u0003\u00fe\u007f\u0000\u1318\u131c\u0003\u031a"+
56399 		"\u018d\u0000\u1319\u131c\u0003\u032c\u0196\u0000\u131a\u131c\u0003\u0332"+
56400 		"\u0199\u0000\u131b\u1316\u0001\u0000\u0000\u0000\u131b\u1317\u0001\u0000"+
56401 		"\u0000\u0000\u131b\u1318\u0001\u0000\u0000\u0000\u131b\u1319\u0001\u0000"+
56402 		"\u0000\u0000\u131b\u131a\u0001\u0000\u0000\u0000\u131c\u029f\u0001\u0000"+
56403 		"\u0000\u0000\u131d\u1320\u0003\u02a2\u0151\u0000\u131e\u1320\u0003\u02a4"+
56404 		"\u0152\u0000\u131f\u131d\u0001\u0000\u0000\u0000\u131f\u131e\u0001\u0000"+
56405 		"\u0000\u0000\u1320\u02a1\u0001\u0000\u0000\u0000\u1321\u1322\u00052\u0000"+
56406 		"\u0000\u1322\u1323\u0005;\u0000\u0000\u1323\u1325\u0003@ \u0000\u1324"+
56407 		"\u1326\u0003P(\u0000\u1325\u1324\u0001\u0000\u0000\u0000\u1325\u1326\u0001"+
56408 		"\u0000\u0000\u0000\u1326\u1327\u0001\u0000\u0000\u0000\u1327\u1328\u0003"+
56409 		"\u02a6\u0153\u0000\u1328\u1329\u0005`\u0000\u0000\u1329\u132a\u0003\u02ca"+
56410 		"\u0165\u0000\u132a\u132b\u0003\u02a8\u0154\u0000\u132b\u02a3\u0001\u0000"+
56411 		"\u0000\u0000\u132c\u132d\u00052\u0000\u0000\u132d\u132e\u0005\u0179\u0000"+
56412 		"\u0000\u132e\u132f\u0005;\u0000\u0000\u132f\u1330\u0003@ \u0000\u1330"+
56413 		"\u1331\u0005\u00d4\u0000\u0000\u1331\u1332\u0005\u001f\u0000\u0000\u1332"+
56414 		"\u1333\u0003\u001c\u000e\u0000\u1333\u133a\u0005 \u0000\u0000\u1334\u1335"+
56415 		"\u0005M\u0000\u0000\u1335\u1336\u0005\u001f\u0000\u0000\u1336\u1337\u0005"+
56416 		"\u0297\u0000\u0000\u1337\u1338\u0005\u0018\u0000\u0000\u1338\u1339\u0005"+
56417 		"\u02cc\u0000\u0000\u1339\u133b\u0005 \u0000\u0000\u133a\u1334\u0001\u0000"+
56418 		"\u0000\u0000\u133a\u133b\u0001\u0000\u0000\u0000\u133b\u133c\u0001\u0000"+
56419 		"\u0000\u0000\u133c\u133d\u0005`\u0000\u0000\u133d\u133e\u0003\u02ca\u0165"+
56420 		"\u0000\u133e\u02a5\u0001\u0000\u0000\u0000\u133f\u1340\u0005M\u0000\u0000"+
56421 		"\u1340\u1341\u0005\u001f\u0000\u0000\u1341\u134b\u0003\u01a6\u00d3\u0000"+
56422 		"\u1342\u1343\u0005%\u0000\u0000\u1343\u1348\u0003\u019a\u00cd\u0000\u1344"+
56423 		"\u1345\u0005%\u0000\u0000\u1345\u1347\u0003\u019a\u00cd\u0000\u1346\u1344"+
56424 		"\u0001\u0000\u0000\u0000\u1347\u134a\u0001\u0000\u0000\u0000\u1348\u1346"+
56425 		"\u0001\u0000\u0000\u0000\u1348\u1349\u0001\u0000\u0000\u0000\u1349\u134c"+
56426 		"\u0001\u0000\u0000\u0000\u134a\u1348\u0001\u0000\u0000\u0000\u134b\u1342"+
56427 		"\u0001\u0000\u0000\u0000\u134b\u134c\u0001\u0000\u0000\u0000\u134c\u134d"+
56428 		"\u0001\u0000\u0000\u0000\u134d\u134e\u0005 \u0000\u0000\u134e\u02a7\u0001"+
56429 		"\u0000\u0000\u0000\u134f\u1350\u0005\u00fa\u0000\u0000\u1350\u1351\u0005"+
56430 		"\u001f\u0000\u0000\u1351\u1356\u0003\u0302\u0181\u0000\u1352\u1353\u0005"+
56431 		"%\u0000\u0000\u1353\u1355\u0003\u0302\u0181\u0000\u1354\u1352\u0001\u0000"+
56432 		"\u0000\u0000\u1355\u1358\u0001\u0000\u0000\u0000\u1356\u1354\u0001\u0000"+
56433 		"\u0000\u0000\u1356\u1357\u0001\u0000\u0000\u0000\u1357\u1359\u0001\u0000"+
56434 		"\u0000\u0000\u1358\u1356\u0001\u0000\u0000\u0000\u1359\u135a\u0005 \u0000"+
56435 		"\u0000\u135a\u135c\u0001\u0000\u0000\u0000\u135b\u134f\u0001\u0000\u0000"+
56436 		"\u0000\u135b\u135c\u0001\u0000\u0000\u0000\u135c\u02a9\u0001\u0000\u0000"+
56437 		"\u0000\u135d\u135f\u0003\u02f2\u0179\u0000\u135e\u135d\u0001\u0000\u0000"+
56438 		"\u0000\u135e\u135f\u0001\u0000\u0000\u0000\u135f\u1360\u0001\u0000\u0000"+
56439 		"\u0000\u1360\u1362\u0005/\u0000\u0000\u1361\u1363\u0003\u02d6\u016b\u0000"+
56440 		"\u1362\u1361\u0001\u0000\u0000\u0000\u1362\u1363\u0001\u0000\u0000\u0000"+
56441 		"\u1363\u1365\u0001\u0000\u0000\u0000\u1364\u1366\u0005K\u0000\u0000\u1365"+
56442 		"\u1364\u0001\u0000\u0000\u0000\u1365\u1366\u0001\u0000\u0000\u0000\u1366"+
56443 		"\u1367\u0001\u0000\u0000\u0000\u1367\u136c\u0003@ \u0000\u1368\u136a\u0005"+
56444 		"`\u0000\u0000\u1369\u1368\u0001\u0000\u0000\u0000\u1369\u136a\u0001\u0000"+
56445 		"\u0000\u0000\u136a\u136b\u0001\u0000\u0000\u0000\u136b\u136d\u0003\\."+
56446 		"\u0000\u136c\u1369\u0001\u0000\u0000\u0000\u136c\u136d\u0001\u0000\u0000"+
56447 		"\u0000\u136d\u136f\u0001\u0000\u0000\u0000\u136e\u1370\u0003\u02b4\u015a"+
56448 		"\u0000\u136f\u136e\u0001\u0000\u0000\u0000\u136f\u1370\u0001\u0000\u0000"+
56449 		"\u0000\u1370\u1375\u0001\u0000\u0000\u0000\u1371\u1376\u0003\u02ac\u0156"+
56450 		"\u0000\u1372\u1376\u0003\u02ae\u0157\u0000\u1373\u1376\u0003\u02b0\u0158"+
56451 		"\u0000\u1374\u1376\u0003\u02b2\u0159\u0000\u1375\u1371\u0001\u0000\u0000"+
56452 		"\u0000\u1375\u1372\u0001\u0000\u0000\u0000\u1375\u1373\u0001\u0000\u0000"+
56453 		"\u0000\u1375\u1374\u0001\u0000\u0000\u0000\u1376\u02ab\u0001\u0000\u0000"+
56454 		"\u0000\u1377\u1379\u0003P(\u0000\u1378\u1377\u0001\u0000\u0000\u0000\u1378"+
56455 		"\u1379\u0001\u0000\u0000\u0000\u1379\u137b\u0001\u0000\u0000\u0000\u137a"+
56456 		"\u137c\u0003\u02f8\u017c\u0000\u137b\u137a\u0001\u0000\u0000\u0000\u137b"+
56457 		"\u137c\u0001\u0000\u0000\u0000\u137c\u137d\u0001\u0000\u0000\u0000\u137d"+
56458 		"\u137e\u0005\u009a\u0000\u0000\u137e\u137f\u0005L\u0000\u0000\u137f\u02ad"+
56459 		"\u0001\u0000\u0000\u0000\u1380\u1382\u0003P(\u0000\u1381\u1380\u0001\u0000"+
56460 		"\u0000\u0000\u1381\u1382\u0001\u0000\u0000\u0000\u1382\u1384\u0001\u0000"+
56461 		"\u0000\u0000\u1383\u1385\u0003\u02f8\u017c\u0000\u1384\u1383\u0001\u0000"+
56462 		"\u0000\u0000\u1384\u1385\u0001\u0000\u0000\u0000\u1385\u1386\u0001\u0000"+
56463 		"\u0000\u0000\u1386\u1387\u0005L\u0000\u0000\u1387\u138c\u0003\u02be\u015f"+
56464 		"\u0000\u1388\u1389\u0005%\u0000\u0000\u1389\u138b\u0003\u02be\u015f\u0000"+
56465 		"\u138a\u1388\u0001\u0000\u0000\u0000\u138b\u138e\u0001\u0000\u0000\u0000"+
56466 		"\u138c\u138a\u0001\u0000\u0000\u0000\u138c\u138d\u0001\u0000\u0000\u0000"+
56467 		"\u138d\u02af\u0001\u0000\u0000\u0000\u138e\u138c\u0001\u0000\u0000\u0000"+
56468 		"\u138f\u1391\u0003P(\u0000\u1390\u138f\u0001\u0000\u0000\u0000\u1390\u1391"+
56469 		"\u0001\u0000\u0000\u0000\u1391\u1393\u0001\u0000\u0000\u0000\u1392\u1394"+
56470 		"\u0003\u02f8\u017c\u0000\u1393\u1392\u0001\u0000\u0000\u0000\u1393\u1394"+
56471 		"\u0001\u0000\u0000\u0000\u1394\u1395\u0001\u0000\u0000\u0000\u1395\u1396"+
56472 		"\u0003\u02ca\u0165\u0000\u1396\u02b1\u0001\u0000\u0000\u0000\u1397\u1399"+
56473 		"\u0003P(\u0000\u1398\u1397\u0001\u0000\u0000\u0000\u1398\u1399\u0001\u0000"+
56474 		"\u0000\u0000\u1399\u139a\u0001\u0000\u0000\u0000\u139a\u139b\u0003\u02b6"+
56475 		"\u015b\u0000\u139b\u02b3\u0001\u0000\u0000\u0000\u139c\u139d\u0005M\u0000"+
56476 		"\u0000\u139d\u139f\u0005\u001f\u0000\u0000\u139e\u13a0\u0003\u00eau\u0000"+
56477 		"\u139f\u139e\u0001\u0000\u0000\u0000\u13a0\u13a1\u0001\u0000\u0000\u0000"+
56478 		"\u13a1\u139f\u0001\u0000\u0000\u0000\u13a1\u13a2\u0001\u0000\u0000\u0000"+
56479 		"\u13a2\u13a3\u0001\u0000\u0000\u0000\u13a3\u13a4\u0005 \u0000\u0000\u13a4"+
56480 		"\u02b5\u0001\u0000\u0000\u0000\u13a5\u13a6\u0007\u001a\u0000\u0000\u13a6"+
56481 		"\u13af\u00038\u001c\u0000\u13a7\u13ac\u0003b1\u0000\u13a8\u13a9\u0005"+
56482 		"%\u0000\u0000\u13a9\u13ab\u0003b1\u0000\u13aa\u13a8\u0001\u0000\u0000"+
56483 		"\u0000\u13ab\u13ae\u0001\u0000\u0000\u0000\u13ac\u13aa\u0001\u0000\u0000"+
56484 		"\u0000\u13ac\u13ad\u0001\u0000\u0000\u0000\u13ad\u13b0\u0001\u0000\u0000"+
56485 		"\u0000\u13ae\u13ac\u0001\u0000\u0000\u0000\u13af\u13a7\u0001\u0000\u0000"+
56486 		"\u0000\u13af\u13b0\u0001\u0000\u0000\u0000\u13b0\u02b7\u0001\u0000\u0000"+
56487 		"\u0000\u13b1\u13b3\u0003\u02f2\u0179\u0000\u13b2\u13b1\u0001\u0000\u0000"+
56488 		"\u0000\u13b2\u13b3\u0001\u0000\u0000\u0000\u13b3\u13b4\u0001\u0000\u0000"+
56489 		"\u0000\u13b4\u13b6\u00050\u0000\u0000\u13b5\u13b7\u0003\u02d6\u016b\u0000"+
56490 		"\u13b6\u13b5\u0001\u0000\u0000\u0000\u13b6\u13b7\u0001\u0000\u0000\u0000"+
56491 		"\u13b7\u13b8\u0001\u0000\u0000\u0000\u13b8\u13b9\u0003\u02e0\u0170\u0000"+
56492 		"\u13b9\u13bb\u0003\u02bc\u015e\u0000\u13ba\u13bc\u0003\u02ea\u0175\u0000"+
56493 		"\u13bb\u13ba\u0001\u0000\u0000\u0000\u13bb\u13bc\u0001\u0000\u0000\u0000"+
56494 		"\u13bc\u13bf\u0001\u0000\u0000\u0000\u13bd\u13be\u0005\u00fa\u0000\u0000"+
56495 		"\u13be\u13c0\u0003\u0302\u0181\u0000\u13bf\u13bd\u0001\u0000\u0000\u0000"+
56496 		"\u13bf\u13c0\u0001\u0000\u0000\u0000\u13c0\u02b9\u0001\u0000\u0000\u0000"+
56497 		"\u13c1\u13c2\u0003H$\u0000\u13c2\u13c3\u0005\u0018\u0000\u0000\u13c3\u13c4"+
56498 		"\u0003\u02c0\u0160\u0000\u13c4\u02bb\u0001\u0000\u0000\u0000\u13c5\u13c6"+
56499 		"\u0005:\u0000\u0000\u13c6\u13cb\u0003\u02ba\u015d\u0000\u13c7\u13c8\u0005"+
56500 		"%\u0000\u0000\u13c8\u13ca\u0003\u02ba\u015d\u0000\u13c9\u13c7\u0001\u0000"+
56501 		"\u0000\u0000\u13ca\u13cd\u0001\u0000\u0000\u0000\u13cb\u13c9\u0001\u0000"+
56502 		"\u0000\u0000\u13cb\u13cc\u0001\u0000\u0000\u0000\u13cc\u13cf\u0001\u0000"+
56503 		"\u0000\u0000\u13cd\u13cb\u0001\u0000\u0000\u0000\u13ce\u13d0\u0003\u02de"+
56504 		"\u016f\u0000\u13cf\u13ce\u0001\u0000\u0000\u0000\u13cf\u13d0\u0001\u0000"+
56505 		"\u0000\u0000\u13d0\u02bd\u0001\u0000\u0000\u0000\u13d1\u13d2\u0005\u001f"+
56506 		"\u0000\u0000\u13d2\u13d7\u0003\u02c0\u0160\u0000\u13d3\u13d4\u0005%\u0000"+
56507 		"\u0000\u13d4\u13d6\u0003\u02c0\u0160\u0000\u13d5\u13d3\u0001\u0000\u0000"+
56508 		"\u0000\u13d6\u13d9\u0001\u0000\u0000\u0000\u13d7\u13d5\u0001\u0000\u0000"+
56509 		"\u0000\u13d7\u13d8\u0001\u0000\u0000\u0000\u13d8\u13da\u0001\u0000\u0000"+
56510 		"\u0000\u13d9\u13d7\u0001\u0000\u0000\u0000\u13da\u13db\u0005 \u0000\u0000"+
56511 		"\u13db\u13df\u0001\u0000\u0000\u0000\u13dc\u13dd\u0005\u001f\u0000\u0000"+
56512 		"\u13dd\u13df\u0005 \u0000\u0000\u13de\u13d1\u0001\u0000\u0000\u0000\u13de"+
56513 		"\u13dc\u0001\u0000\u0000\u0000\u13df\u02bf\u0001\u0000\u0000\u0000\u13e0"+
56514 		"\u13e3\u0003b1\u0000\u13e1\u13e3\u0005\u009a\u0000\u0000\u13e2\u13e0\u0001"+
56515 		"\u0000\u0000\u0000\u13e2\u13e1\u0001\u0000\u0000\u0000\u13e3\u02c1\u0001"+
56516 		"\u0000\u0000\u0000\u13e4\u13e6\u0003\u02f2\u0179\u0000\u13e5\u13e4\u0001"+
56517 		"\u0000\u0000\u0000\u13e5\u13e6\u0001\u0000\u0000\u0000\u13e6\u13e7\u0001"+
56518 		"\u0000\u0000\u0000\u13e7\u13e9\u00051\u0000\u0000\u13e8\u13ea\u0003\u02d6"+
56519 		"\u016b\u0000\u13e9\u13e8\u0001\u0000\u0000\u0000\u13e9\u13ea\u0001\u0000"+
56520 		"\u0000\u0000\u13ea\u13ed\u0001\u0000\u0000\u0000\u13eb\u13ee\u0003\u02c4"+
56521 		"\u0162\u0000\u13ec\u13ee\u0003\u02c6\u0163\u0000\u13ed\u13eb\u0001\u0000"+
56522 		"\u0000\u0000\u13ed\u13ec\u0001\u0000\u0000\u0000\u13ee\u13f0\u0001\u0000"+
56523 		"\u0000\u0000\u13ef\u13f1\u0003\u02f8\u017c\u0000\u13f0\u13ef\u0001\u0000"+
56524 		"\u0000\u0000\u13f0\u13f1\u0001\u0000\u0000\u0000\u13f1\u13f3\u0001\u0000"+
56525 		"\u0000\u0000\u13f2\u13f4\u0003\u02ea\u0175\u0000\u13f3\u13f2\u0001\u0000"+
56526 		"\u0000\u0000\u13f3\u13f4\u0001\u0000\u0000\u0000\u13f4\u13f7\u0001\u0000"+
56527 		"\u0000\u0000\u13f5\u13f6\u0005\u00fa\u0000\u0000\u13f6\u13f8\u0003\u0302"+
56528 		"\u0181\u0000\u13f7\u13f5\u0001\u0000\u0000\u0000\u13f7\u13f8\u0001\u0000"+
56529 		"\u0000\u0000\u13f8\u02c3\u0001\u0000\u0000\u0000\u13f9\u13fb\u0005U\u0000"+
56530 		"\u0000\u13fa\u13f9\u0001\u0000\u0000\u0000\u13fa\u13fb\u0001\u0000\u0000"+
56531 		"\u0000\u13fb\u13fd\u0001\u0000\u0000\u0000\u13fc\u13fe\u0005\u001f\u0000"+
56532 		"\u0000\u13fd\u13fc\u0001\u0000\u0000\u0000\u13fd\u13fe\u0001\u0000\u0000"+
56533 		"\u0000\u13fe\u13ff\u0001\u0000\u0000\u0000\u13ff\u1401\u0003@ \u0000\u1400"+
56534 		"\u1402\u0005 \u0000\u0000\u1401\u1400\u0001\u0000\u0000\u0000\u1401\u1402"+
56535 		"\u0001\u0000\u0000\u0000\u1402\u1407\u0001\u0000\u0000\u0000\u1403\u1405"+
56536 		"\u0005`\u0000\u0000\u1404\u1403\u0001\u0000\u0000\u0000\u1404\u1405\u0001"+
56537 		"\u0000\u0000\u0000\u1405\u1406\u0001\u0000\u0000\u0000\u1406\u1408\u0003"+
56538 		"\\.\u0000\u1407\u1404\u0001\u0000\u0000\u0000\u1407\u1408\u0001\u0000"+
56539 		"\u0000\u0000\u1408\u02c5\u0001\u0000\u0000\u0000\u1409\u140a\u0003\u02c8"+
56540 		"\u0164\u0000\u140a\u140b\u0005U\u0000\u0000\u140b\u140c\u0003\u02e0\u0170"+
56541 		"\u0000\u140c\u1413\u0001\u0000\u0000\u0000\u140d\u140e\u0005U\u0000\u0000"+
56542 		"\u140e\u140f\u0003\u02c8\u0164\u0000\u140f\u1410\u0005^\u0000\u0000\u1410"+
56543 		"\u1411\u0003\u02e0\u0170\u0000\u1411\u1413\u0001\u0000\u0000\u0000\u1412"+
56544 		"\u1409\u0001\u0000\u0000\u0000\u1412\u140d\u0001\u0000\u0000\u0000\u1413"+
56545 		"\u02c7\u0001\u0000\u0000\u0000\u1414\u1416\u0003@ \u0000\u1415\u1417\u0005"+
56546 		"\u0015\u0000\u0000\u1416\u1415\u0001\u0000\u0000\u0000\u1416\u1417\u0001"+
56547 		"\u0000\u0000\u0000\u1417\u141f\u0001\u0000\u0000\u0000\u1418\u1419\u0005"+
56548 		"%\u0000\u0000\u1419\u141b\u0003@ \u0000\u141a\u141c\u0005\u0015\u0000"+
56549 		"\u0000\u141b\u141a\u0001\u0000\u0000\u0000\u141b\u141c\u0001\u0000\u0000"+
56550 		"\u0000\u141c\u141e\u0001\u0000\u0000\u0000\u141d\u1418\u0001\u0000\u0000"+
56551 		"\u0000\u141e\u1421\u0001\u0000\u0000\u0000\u141f\u141d\u0001\u0000\u0000"+
56552 		"\u0000\u141f\u1420\u0001\u0000\u0000\u0000\u1420\u02c9\u0001\u0000\u0000"+
56553 		"\u0000\u1421\u141f\u0001\u0000\u0000\u0000\u1422\u1423\u0003\u02cc\u0166"+
56554 		"\u0000\u1423\u02cb\u0001\u0000\u0000\u0000\u1424\u1430\u0003\u02ce\u0167"+
56555 		"\u0000\u1425\u1427\u0005N\u0000\u0000\u1426\u1428\u0005r\u0000\u0000\u1427"+
56556 		"\u1426\u0001\u0000\u0000\u0000\u1427\u1428\u0001\u0000\u0000\u0000\u1428"+
56557 		"\u142c\u0001\u0000\u0000\u0000\u1429\u142c\u0005\u00bc\u0000\u0000\u142a"+
56558 		"\u142c\u0005\u00bd\u0000\u0000\u142b\u1425\u0001\u0000\u0000\u0000\u142b"+
56559 		"\u1429\u0001\u0000\u0000\u0000\u142b\u142a\u0001\u0000\u0000\u0000\u142c"+
56560 		"\u142d\u0001\u0000\u0000\u0000\u142d\u142f\u0003\u02ce\u0167\u0000\u142e"+
56561 		"\u142b\u0001\u0000\u0000\u0000\u142f\u1432\u0001\u0000\u0000\u0000\u1430"+
56562 		"\u142e\u0001\u0000\u0000\u0000\u1430\u1431\u0001\u0000\u0000\u0000\u1431"+
56563 		"\u02cd\u0001\u0000\u0000\u0000\u1432\u1430\u0001\u0000\u0000\u0000\u1433"+
56564 		"\u1435\u0003\u030e\u0187\u0000\u1434\u1433\u0001\u0000\u0000\u0000\u1434"+
56565 		"\u1435\u0001\u0000\u0000\u0000\u1435\u1436\u0001\u0000\u0000\u0000\u1436"+
56566 		"\u1438\u0005.\u0000\u0000\u1437\u1439\u0003\u02d0\u0168\u0000\u1438\u1437"+
56567 		"\u0001\u0000\u0000\u0000\u1438\u1439\u0001\u0000\u0000\u0000\u1439\u143a"+
56568 		"\u0001\u0000\u0000\u0000\u143a\u143c\u0003\u02d2\u0169\u0000\u143b\u143d"+
56569 		"\u0003\u02de\u016f\u0000\u143c\u143b\u0001\u0000\u0000\u0000\u143c\u143d"+
56570 		"\u0001\u0000\u0000\u0000\u143d\u143f\u0001\u0000\u0000\u0000\u143e\u1440"+
56571 		"\u0003\u02ea\u0175\u0000\u143f\u143e\u0001\u0000\u0000\u0000\u143f\u1440"+
56572 		"\u0001\u0000\u0000\u0000\u1440\u1442\u0001\u0000\u0000\u0000\u1441\u1443"+
56573 		"\u0003\u02ec\u0176\u0000\u1442\u1441\u0001\u0000\u0000\u0000\u1442\u1443"+
56574 		"\u0001\u0000\u0000\u0000\u1443\u1445\u0001\u0000\u0000\u0000\u1444\u1446"+
56575 		"\u0003\u02ee\u0177\u0000\u1445\u1444\u0001\u0000\u0000\u0000\u1445\u1446"+
56576 		"\u0001\u0000\u0000\u0000\u1446\u1448\u0001\u0000\u0000\u0000\u1447\u1449"+
56577 		"\u0003\u009aM\u0000\u1448\u1447\u0001\u0000\u0000\u0000\u1448\u1449\u0001"+
56578 		"\u0000\u0000\u0000\u1449\u144b\u0001\u0000\u0000\u0000\u144a\u144c\u0003"+
56579 		"\u0306\u0183\u0000\u144b\u144a\u0001\u0000\u0000\u0000\u144b\u144c\u0001"+
56580 		"\u0000\u0000\u0000\u144c\u02cf\u0001\u0000\u0000\u0000\u144d\u144e\u0007"+
56581 		"I\u0000\u0000\u144e\u02d1\u0001\u0000\u0000\u0000\u144f\u1455\u0003\u02d4"+
56582 		"\u016a\u0000\u1450\u1452\u0003\u02d6\u016b\u0000\u1451\u1453\u0003\u02d4"+
56583 		"\u016a\u0000\u1452\u1451\u0001\u0000\u0000\u0000\u1452\u1453\u0001\u0000"+
56584 		"\u0000\u0000\u1453\u1455\u0001\u0000\u0000\u0000\u1454\u144f\u0001\u0000"+
56585 		"\u0000\u0000\u1454\u1450\u0001\u0000\u0000\u0000\u1455\u145a\u0001\u0000"+
56586 		"\u0000\u0000\u1456\u1457\u0005%\u0000\u0000\u1457\u1459\u0003\u02d4\u016a"+
56587 		"\u0000\u1458\u1456\u0001\u0000\u0000\u0000\u1459\u145c\u0001\u0000\u0000"+
56588 		"\u0000\u145a\u1458\u0001\u0000\u0000\u0000\u145a\u145b\u0001\u0000\u0000"+
56589 		"\u0000\u145b\u02d3\u0001\u0000\u0000\u0000\u145c\u145a\u0001\u0000\u0000"+
56590 		"\u0000\u145d\u1473\u0003\u02dc\u016e\u0000\u145e\u1473\u0003\u02da\u016d"+
56591 		"\u0000\u145f\u1460\u0003\\.\u0000\u1460\u1461\u0005\u0018\u0000\u0000"+
56592 		"\u1461\u1463\u0001\u0000\u0000\u0000\u1462\u145f\u0001\u0000\u0000\u0000"+
56593 		"\u1462\u1463\u0001\u0000\u0000\u0000\u1463\u1466\u0001\u0000\u0000\u0000"+
56594 		"\u1464\u1467\u0003H$\u0000\u1465\u1467\u0003b1\u0000\u1466\u1464\u0001"+
56595 		"\u0000\u0000\u0000\u1466\u1465\u0001\u0000\u0000\u0000\u1467\u1473\u0001"+
56596 		"\u0000\u0000\u0000\u1468\u146b\u0003H$\u0000\u1469\u146b\u0003b1\u0000"+
56597 		"\u146a\u1468\u0001\u0000\u0000\u0000\u146a\u1469\u0001\u0000\u0000\u0000"+
56598 		"\u146b\u1470\u0001\u0000\u0000\u0000\u146c\u146e\u0005`\u0000\u0000\u146d"+
56599 		"\u146c\u0001\u0000\u0000\u0000\u146d\u146e\u0001\u0000\u0000\u0000\u146e"+
56600 		"\u146f\u0001\u0000\u0000\u0000\u146f\u1471\u0003\\.\u0000\u1470\u146d"+
56601 		"\u0001\u0000\u0000\u0000\u1470\u1471\u0001\u0000\u0000\u0000\u1471\u1473"+
56602 		"\u0001\u0000\u0000\u0000\u1472\u145d\u0001\u0000\u0000\u0000\u1472\u145e"+
56603 		"\u0001\u0000\u0000\u0000\u1472\u1462\u0001\u0000\u0000\u0000\u1472\u146a"+
56604 		"\u0001\u0000\u0000\u0000\u1473\u02d5\u0001\u0000\u0000\u0000\u1474\u1476"+
56605 		"\u0005\u00f0\u0000\u0000\u1475\u1477\u0005\u001f\u0000\u0000\u1476\u1475"+
56606 		"\u0001\u0000\u0000\u0000\u1476\u1477\u0001\u0000\u0000\u0000\u1477\u1478"+
56607 		"\u0001\u0000\u0000\u0000\u1478\u147a\u0003\u02d8\u016c\u0000\u1479\u147b"+
56608 		"\u0005 \u0000\u0000\u147a\u1479\u0001\u0000\u0000\u0000\u147a\u147b\u0001"+
56609 		"\u0000\u0000\u0000\u147b\u147d\u0001\u0000\u0000\u0000\u147c\u147e\u0005"+
56610 		"\u00ba\u0000\u0000\u147d\u147c\u0001\u0000\u0000\u0000\u147d\u147e\u0001"+
56611 		"\u0000\u0000\u0000\u147e\u1481\u0001\u0000\u0000\u0000\u147f\u1480\u0005"+
56612 		"M\u0000\u0000\u1480\u1482\u0005\u00bb\u0000\u0000\u1481\u147f\u0001\u0000"+
56613 		"\u0000\u0000\u1481\u1482\u0001\u0000\u0000\u0000\u1482\u1490\u0001\u0000"+
56614 		"\u0000\u0000\u1483\u1484\u0005\u01b6\u0000\u0000\u1484\u1485\u0005\u001f"+
56615 		"\u0000\u0000\u1485\u1486\u0005 \u0000\u0000\u1486\u1487\u0005\u012a\u0000"+
56616 		"\u0000\u1487\u1488\u0005\u001f\u0000\u0000\u1488\u1489\u0003\u009aM\u0000"+
56617 		"\u1489\u148e\u0005 \u0000\u0000\u148a\u148c\u0005`\u0000\u0000\u148b\u148a"+
56618 		"\u0001\u0000\u0000\u0000\u148b\u148c\u0001\u0000\u0000\u0000\u148c\u148d"+
56619 		"\u0001\u0000\u0000\u0000\u148d\u148f\u0003\\.\u0000\u148e\u148b\u0001"+
56620 		"\u0000\u0000\u0000\u148e\u148f\u0001\u0000\u0000\u0000\u148f\u1491\u0001"+
56621 		"\u0000\u0000\u0000\u1490\u1483\u0001\u0000\u0000\u0000\u1490\u1491\u0001"+
56622 		"\u0000\u0000\u0000\u1491\u02d7\u0001\u0000\u0000\u0000\u1492\u1495\u0003"+
56623 		"\u001e\u000f\u0000\u1493\u1495\u0003\u0018\f\u0000\u1494\u1492\u0001\u0000"+
56624 		"\u0000\u0000\u1494\u1493\u0001\u0000\u0000\u0000\u1495\u02d9\u0001\u0000"+
56625 		"\u0000\u0000\u1496\u1497\u0005\u0011\u0000\u0000\u1497\u02db\u0001\u0000"+
56626 		"\u0000\u0000\u1498\u1499\u0003*\u0015\u0000\u1499\u149a\u0005\u0015\u0000"+
56627 		"\u0000\u149a\u02dd\u0001\u0000\u0000\u0000\u149b\u149c\u0005U\u0000\u0000"+
56628 		"\u149c\u149d\u0003\u02e0\u0170\u0000\u149d\u02df\u0001\u0000\u0000\u0000"+
56629 		"\u149e\u14a3\u0003\u02e2\u0171\u0000\u149f\u14a0\u0005%\u0000\u0000\u14a0"+
56630 		"\u14a2\u0003\u02e2\u0171\u0000\u14a1\u149f\u0001\u0000\u0000\u0000\u14a2"+
56631 		"\u14a5\u0001\u0000\u0000\u0000\u14a3\u14a1\u0001\u0000\u0000\u0000\u14a3"+
56632 		"\u14a4\u0001\u0000\u0000\u0000\u14a4\u02e1\u0001\u0000\u0000\u0000\u14a5"+
56633 		"\u14a3\u0001\u0000\u0000\u0000\u14a6\u14aa\u0003\u02e4\u0172\u0000\u14a7"+
56634 		"\u14a9\u0003\u02e6\u0173\u0000\u14a8\u14a7\u0001\u0000\u0000\u0000\u14a9"+
56635 		"\u14ac\u0001\u0000\u0000\u0000\u14aa\u14a8\u0001\u0000\u0000\u0000\u14aa"+
56636 		"\u14ab\u0001\u0000\u0000\u0000\u14ab\u02e3\u0001\u0000\u0000\u0000\u14ac"+
56637 		"\u14aa\u0001\u0000\u0000\u0000\u14ad\u14b2\u0003@ \u0000\u14ae\u14b0\u0005"+
56638 		"`\u0000\u0000\u14af\u14ae\u0001\u0000\u0000\u0000\u14af\u14b0\u0001\u0000"+
56639 		"\u0000\u0000\u14b0\u14b1\u0001\u0000\u0000\u0000\u14b1\u14b3\u0003\\."+
56640 		"\u0000\u14b2\u14af\u0001\u0000\u0000\u0000\u14b2\u14b3\u0001\u0000\u0000"+
56641 		"\u0000\u14b3\u14c8\u0001\u0000\u0000\u0000\u14b4\u14b6\u0003\u02f0\u0178"+
56642 		"\u0000\u14b5\u14b7\u0005`\u0000\u0000\u14b6\u14b5\u0001\u0000\u0000\u0000"+
56643 		"\u14b6\u14b7\u0001\u0000\u0000\u0000\u14b7\u14b8\u0001\u0000\u0000\u0000"+
56644 		"\u14b8\u14ba\u0003\\.\u0000\u14b9\u14bb\u0003P(\u0000\u14ba\u14b9\u0001"+
56645 		"\u0000\u0000\u0000\u14ba\u14bb\u0001\u0000\u0000\u0000\u14bb\u14c8\u0001"+
56646 		"\u0000\u0000\u0000\u14bc\u14c1\u0003b1\u0000\u14bd\u14bf\u0005`\u0000"+
56647 		"\u0000\u14be\u14bd\u0001\u0000\u0000\u0000\u14be\u14bf\u0001\u0000\u0000"+
56648 		"\u0000\u14bf\u14c0\u0001\u0000\u0000\u0000\u14c0\u14c2\u0003\\.\u0000"+
56649 		"\u14c1\u14be\u0001\u0000\u0000\u0000\u14c1\u14c2\u0001\u0000\u0000\u0000"+
56650 		"\u14c2\u14c8\u0001\u0000\u0000\u0000\u14c3\u14c4\u0005\u001f\u0000\u0000"+
56651 		"\u14c4\u14c5\u0003\u02e0\u0170\u0000\u14c5\u14c6\u0005 \u0000\u0000\u14c6"+
56652 		"\u14c8\u0001\u0000\u0000\u0000\u14c7\u14ad\u0001\u0000\u0000\u0000\u14c7"+
56653 		"\u14b4\u0001\u0000\u0000\u0000\u14c7\u14bc\u0001\u0000\u0000\u0000\u14c7"+
56654 		"\u14c3\u0001\u0000\u0000\u0000\u14c8\u02e5\u0001\u0000\u0000\u0000\u14c9"+
56655 		"\u14cb\u0005V\u0000\u0000\u14ca\u14c9\u0001\u0000\u0000\u0000\u14ca\u14cb"+
56656 		"\u0001\u0000\u0000\u0000\u14cb\u14cd\u0001\u0000\u0000\u0000\u14cc\u14ce"+
56657 		"\u0007J\u0000\u0000\u14cd\u14cc\u0001\u0000\u0000\u0000\u14cd\u14ce\u0001"+
56658 		"\u0000\u0000\u0000\u14ce\u14cf\u0001\u0000\u0000\u0000\u14cf\u14d0\u0005"+
56659 		"W\u0000\u0000\u14d0\u14d1\u0001\u0000\u0000\u0000\u14d1\u14d3\u0003\u02e4"+
56660 		"\u0172\u0000\u14d2\u14d4\u0003\u02e8\u0174\u0000\u14d3\u14d2\u0001\u0000"+
56661 		"\u0000\u0000\u14d3\u14d4\u0001\u0000\u0000\u0000\u14d4\u14e8\u0001\u0000"+
56662 		"\u0000\u0000\u14d5\u14d7\u0005V\u0000\u0000\u14d6\u14d5\u0001\u0000\u0000"+
56663 		"\u0000\u14d6\u14d7\u0001\u0000\u0000\u0000\u14d7\u14d8\u0001\u0000\u0000"+
56664 		"\u0000\u14d8\u14da\u0007K\u0000\u0000\u14d9\u14db\u0005Z\u0000\u0000\u14da"+
56665 		"\u14d9\u0001\u0000\u0000\u0000\u14da\u14db\u0001\u0000\u0000\u0000\u14db"+
56666 		"\u14dc\u0001\u0000\u0000\u0000\u14dc\u14dd\u0005W\u0000\u0000\u14dd\u14df"+
56667 		"\u0003\u02e4\u0172\u0000\u14de\u14e0\u0003\u02e8\u0174\u0000\u14df\u14de"+
56668 		"\u0001\u0000\u0000\u0000\u14df\u14e0\u0001\u0000\u0000\u0000\u14e0\u14e8"+
56669 		"\u0001\u0000\u0000\u0000\u14e1\u14e2\u0007L\u0000\u0000\u14e2\u14e3\u0005"+
56670 		"\u00d7\u0000\u0000\u14e3\u14e5\u0003\u02e4\u0172\u0000\u14e4\u14e6\u0003"+
56671 		"\u02e8\u0174\u0000\u14e5\u14e4\u0001\u0000\u0000\u0000\u14e5\u14e6\u0001"+
56672 		"\u0000\u0000\u0000\u14e6\u14e8\u0001\u0000\u0000\u0000\u14e7\u14ca\u0001"+
56673 		"\u0000\u0000\u0000\u14e7\u14d6\u0001\u0000\u0000\u0000\u14e7\u14e1\u0001"+
56674 		"\u0000\u0000\u0000\u14e8\u02e7\u0001\u0000\u0000\u0000\u14e9\u14ea\u0005"+
56675 		"a\u0000\u0000\u14ea\u14ee\u0003b1\u0000\u14eb\u14ec\u0005^\u0000\u0000"+
56676 		"\u14ec\u14ee\u0003P(\u0000\u14ed\u14e9\u0001\u0000\u0000\u0000\u14ed\u14eb"+
56677 		"\u0001\u0000\u0000\u0000\u14ee\u02e9\u0001\u0000\u0000\u0000\u14ef\u14f0"+
56678 		"\u0005_\u0000\u0000\u14f0\u14f1\u0003b1\u0000\u14f1\u02eb\u0001\u0000"+
56679 		"\u0000\u0000\u14f2\u14f3\u0005v\u0000\u0000\u14f3\u14f4\u0005w\u0000\u0000"+
56680 		"\u14f4\u14f9\u0003\u009cN\u0000\u14f5\u14f6\u0005%\u0000\u0000\u14f6\u14f8"+
56681 		"\u0003\u009cN\u0000\u14f7\u14f5\u0001\u0000\u0000\u0000\u14f8\u14fb\u0001"+
56682 		"\u0000\u0000\u0000\u14f9\u14f7\u0001\u0000\u0000\u0000\u14f9\u14fa\u0001"+
56683 		"\u0000\u0000\u0000\u14fa\u02ed\u0001\u0000\u0000\u0000\u14fb\u14f9\u0001"+
56684 		"\u0000\u0000\u0000\u14fc\u14fd\u0005z\u0000\u0000\u14fd\u14fe\u0003b1"+
56685 		"\u0000\u14fe\u02ef\u0001\u0000\u0000\u0000\u14ff\u1500\u0005\u001f\u0000"+
56686 		"\u0000\u1500\u1501\u0003\u02cc\u0166\u0000\u1501\u1502\u0005 \u0000\u0000"+
56687 		"\u1502\u02f1\u0001\u0000\u0000\u0000\u1503\u1504\u0005M\u0000\u0000\u1504"+
56688 		"\u1505\u0003\u02f4\u017a\u0000\u1505\u02f3\u0001\u0000\u0000\u0000\u1506"+
56689 		"\u150b\u0003\u02f6\u017b\u0000\u1507\u1508\u0005%\u0000\u0000\u1508\u150a"+
56690 		"\u0003\u02f6\u017b\u0000\u1509\u1507\u0001\u0000\u0000\u0000\u150a\u150d"+
56691 		"\u0001\u0000\u0000\u0000\u150b\u1509\u0001\u0000\u0000\u0000\u150b\u150c"+
56692 		"\u0001\u0000\u0000\u0000\u150c\u02f5\u0001\u0000\u0000\u0000\u150d\u150b"+
56693 		"\u0001\u0000\u0000\u0000\u150e\u1510\u0003*\u0015\u0000\u150f\u1511\u0003"+
56694 		"P(\u0000\u1510\u150f\u0001\u0000\u0000\u0000\u1510\u1511\u0001\u0000\u0000"+
56695 		"\u0000\u1511\u1512\u0001\u0000\u0000\u0000\u1512\u1513\u0005`\u0000\u0000"+
56696 		"\u1513\u1514\u0003\u02f0\u0178\u0000\u1514\u02f7\u0001\u0000\u0000\u0000"+
56697 		"\u1515\u1518\u0005\u01ca\u0000\u0000\u1516\u1519\u0003\u02fa\u017d\u0000"+
56698 		"\u1517\u1519\u0003\u02fe\u017f\u0000\u1518\u1516\u0001\u0000\u0000\u0000"+
56699 		"\u1518\u1517\u0001\u0000\u0000\u0000\u1519\u151f\u0001\u0000\u0000\u0000"+
56700 		"\u151a\u151b\u0005K\u0000\u0000\u151b\u151d\u0003\u0300\u0180\u0000\u151c"+
56701 		"\u151e\u0003P(\u0000\u151d\u151c\u0001\u0000\u0000\u0000\u151d\u151e\u0001"+
56702 		"\u0000\u0000\u0000\u151e\u1520\u0001\u0000\u0000\u0000\u151f\u151a\u0001"+
56703 		"\u0000\u0000\u0000\u151f\u1520\u0001\u0000\u0000\u0000\u1520\u02f9\u0001"+
56704 		"\u0000\u0000\u0000\u1521\u1526\u0003\u02fc\u017e\u0000\u1522\u1523\u0005"+
56705 		"%\u0000\u0000\u1523\u1525\u0003\u02fc\u017e\u0000\u1524\u1522\u0001\u0000"+
56706 		"\u0000\u0000\u1525\u1528\u0001\u0000\u0000\u0000\u1526\u1524\u0001\u0000"+
56707 		"\u0000\u0000\u1526\u1527\u0001\u0000\u0000\u0000\u1527\u02fb\u0001\u0000"+
56708 		"\u0000\u0000\u1528\u1526\u0001\u0000\u0000\u0000\u1529\u152a\u0007M\u0000"+
56709 		"\u0000\u152a\u152b\u0005\u0014\u0000\u0000\u152b\u1530\u0003N\'\u0000"+
56710 		"\u152c\u152e\u0005`\u0000\u0000\u152d\u152c\u0001\u0000\u0000\u0000\u152d"+
56711 		"\u152e\u0001\u0000\u0000\u0000\u152e\u152f\u0001\u0000\u0000\u0000\u152f"+
56712 		"\u1531\u0003\\.\u0000\u1530\u152d\u0001\u0000\u0000\u0000\u1530\u1531"+
56713 		"\u0001\u0000\u0000\u0000\u1531\u02fd\u0001\u0000\u0000\u0000\u1532\u1533"+
56714 		"\u0007M\u0000\u0000\u1533\u1534\u0005\u0015\u0000\u0000\u1534\u02ff\u0001"+
56715 		"\u0000\u0000\u0000\u1535\u1536\u0005*\u0000\u0000\u1536\u1539\u0003N\'"+
56716 		"\u0000\u1537\u1539\u0003@ \u0000\u1538\u1535\u0001\u0000\u0000\u0000\u1538"+
56717 		"\u1537\u0001\u0000\u0000\u0000\u1539\u0301\u0001\u0000\u0000\u0000\u153a"+
56718 		"\u153b\u0007N\u0000\u0000\u153b\u1581\u0005v\u0000\u0000\u153c\u153d\u0007"+
56719 		"O\u0000\u0000\u153d\u1581\u0005N\u0000\u0000\u153e\u153f\u0007P\u0000"+
56720 		"\u0000\u153f\u1581\u0005W\u0000\u0000\u1540\u1541\u0005\u00c1\u0000\u0000"+
56721 		"\u1541\u1581\u0005\u00c2\u0000\u0000\u1542\u1543\u0005\u00c3\u0000\u0000"+
56722 		"\u1543\u1581\u0005\u02cc\u0000\u0000\u1544\u1545\u0005\u00c4\u0000\u0000"+
56723 		"\u1545\u1581\u0005u\u0000\u0000\u1546\u1547\u0007Q\u0000\u0000\u1547\u1581"+
56724 		"\u0005\u01df\u0000\u0000\u1548\u1549\u0007Q\u0000\u0000\u1549\u1581\u0005"+
56725 		"\u01e0\u0000\u0000\u154a\u1581\u0005\u01e1\u0000\u0000\u154b\u154c\u0005"+
56726 		"\u00c5\u0000\u0000\u154c\u1581\u0005\u00c6\u0000\u0000\u154d\u154e\u0005"+
56727 		"\u01e2\u0000\u0000\u154e\u1581\u0005\u00c6\u0000\u0000\u154f\u1550\u0005"+
56728 		"\u01e3\u0000\u0000\u1550\u1551\u0005\u0018\u0000\u0000\u1551\u1581\u0005"+
56729 		"\u02ce\u0000\u0000\u1552\u1553\u0005\u01e4\u0000\u0000\u1553\u1554\u0005"+
56730 		"\u0018\u0000\u0000\u1554\u1581\u0005\u02ce\u0000\u0000\u1555\u1556\u0005"+
56731 		"\u0124\u0000\u0000\u1556\u1581\u0005\u02cc\u0000\u0000\u1557\u1558\u0005"+
56732 		"\u01e5\u0000\u0000\u1558\u1581\u0005\u02cc\u0000\u0000\u1559\u1581\u0005"+
56733 		"\u01e6\u0000\u0000\u155a\u155b\u0005\u00c7\u0000\u0000\u155b\u155c\u0005"+
56734 		"f\u0000\u0000\u155c\u155d\u0005\u001f\u0000\u0000\u155d\u155e\u0005*\u0000"+
56735 		"\u0000\u155e\u1564\u0003N\'\u0000\u155f\u1563\u0005\u00f3\u0000\u0000"+
56736 		"\u1560\u1561\u0005\u0018\u0000\u0000\u1561\u1563\u0003*\u0015\u0000\u1562"+
56737 		"\u155f\u0001\u0000\u0000\u0000\u1562\u1560\u0001\u0000\u0000\u0000\u1563"+
56738 		"\u1566\u0001\u0000\u0000\u0000\u1564\u1562\u0001\u0000\u0000\u0000\u1564"+
56739 		"\u1565\u0001\u0000\u0000\u0000\u1565\u1567\u0001\u0000\u0000\u0000\u1566"+
56740 		"\u1564\u0001\u0000\u0000\u0000\u1567\u1568\u0005 \u0000\u0000\u1568\u1581"+
56741 		"\u0001\u0000\u0000\u0000\u1569\u156a\u0005\u00c7\u0000\u0000\u156a\u156b"+
56742 		"\u0005f\u0000\u0000\u156b\u1581\u0005\u00f3\u0000\u0000\u156c\u156d\u0005"+
56743 		"\u01e7\u0000\u0000\u156d\u1581\u0007>\u0000\u0000\u156e\u156f\u0005\u01e8"+
56744 		"\u0000\u0000\u156f\u1581\u0005\u02cc\u0000\u0000\u1570\u1581\u0005\u01e9"+
56745 		"\u0000\u0000\u1571\u1572\u0005\u01ea\u0000\u0000\u1572\u1581\u0005\u00c6"+
56746 		"\u0000\u0000\u1573\u1574\u0005\u00be\u0000\u0000\u1574\u1575\u0005\u00ca"+
56747 		"\u0000\u0000\u1575\u1579\u0005\u001f\u0000\u0000\u1576\u1578\u0003\u0304"+
56748 		"\u0182\u0000\u1577\u1576\u0001\u0000\u0000\u0000\u1578\u157b\u0001\u0000"+
56749 		"\u0000\u0000\u1579\u1577\u0001\u0000\u0000\u0000\u1579\u157a\u0001\u0000"+
56750 		"\u0000\u0000\u157a\u157c\u0001\u0000\u0000\u0000\u157b\u1579\u0001\u0000"+
56751 		"\u0000\u0000\u157c\u1581\u0005 \u0000\u0000\u157d\u157e\u0005\u00be\u0000"+
56752 		"\u0000\u157e\u157f\u0005\u00c6\u0000\u0000\u157f\u1581\u0005\u02d1\u0000"+
56753 		"\u0000\u1580\u153a\u0001\u0000\u0000\u0000\u1580\u153c\u0001\u0000\u0000"+
56754 		"\u0000\u1580\u153e\u0001\u0000\u0000\u0000\u1580\u1540\u0001\u0000\u0000"+
56755 		"\u0000\u1580\u1542\u0001\u0000\u0000\u0000\u1580\u1544\u0001\u0000\u0000"+
56756 		"\u0000\u1580\u1546\u0001\u0000\u0000\u0000\u1580\u1548\u0001\u0000\u0000"+
56757 		"\u0000\u1580\u154a\u0001\u0000\u0000\u0000\u1580\u154b\u0001\u0000\u0000"+
56758 		"\u0000\u1580\u154d\u0001\u0000\u0000\u0000\u1580\u154f\u0001\u0000\u0000"+
56759 		"\u0000\u1580\u1552\u0001\u0000\u0000\u0000\u1580\u1555\u0001\u0000\u0000"+
56760 		"\u0000\u1580\u1557\u0001\u0000\u0000\u0000\u1580\u1559\u0001\u0000\u0000"+
56761 		"\u0000\u1580\u155a\u0001\u0000\u0000\u0000\u1580\u1569\u0001\u0000\u0000"+
56762 		"\u0000\u1580\u156c\u0001\u0000\u0000\u0000\u1580\u156e\u0001\u0000\u0000"+
56763 		"\u0000\u1580\u1570\u0001\u0000\u0000\u0000\u1580\u1571\u0001\u0000\u0000"+
56764 		"\u0000\u1580\u1573\u0001\u0000\u0000\u0000\u1580\u157d\u0001\u0000\u0000"+
56765 		"\u0000\u1581\u0303\u0001\u0000\u0000\u0000\u1582\u1583\u0005\'\u0000\u0000"+
56766 		"\u1583\u1584\u0005\u01cd\u0000\u0000\u1584\u15b9\u0005\'\u0000\u0000\u1585"+
56767 		"\u1586\u0005\'\u0000\u0000\u1586\u1587\u0005\u01ce\u0000\u0000\u1587\u15b9"+
56768 		"\u0005\'\u0000\u0000\u1588\u1589\u0005\'\u0000\u0000\u1589\u158a\u0005"+
56769 		"\u01cf\u0000\u0000\u158a\u15b9\u0005\'\u0000\u0000\u158b\u158c\u0005\'"+
56770 		"\u0000\u0000\u158c\u158d\u0005\u01d0\u0000\u0000\u158d\u15b9\u0005\'\u0000"+
56771 		"\u0000\u158e\u158f\u0005\'\u0000\u0000\u158f\u1590\u0005\u01d1\u0000\u0000"+
56772 		"\u1590\u15b9\u0005\'\u0000\u0000\u1591\u1592\u0005\'\u0000\u0000\u1592"+
56773 		"\u1593\u0005\u01d2\u0000\u0000\u1593\u15b9\u0005\'\u0000\u0000\u1594\u1595"+
56774 		"\u0005\'\u0000\u0000\u1595\u1596\u0005\u01d3\u0000\u0000\u1596\u15b9\u0005"+
56775 		"\'\u0000\u0000\u1597\u1598\u0005\'\u0000\u0000\u1598\u1599\u0005\u01d4"+
56776 		"\u0000\u0000\u1599\u15b9\u0005\'\u0000\u0000\u159a\u159b\u0005\'\u0000"+
56777 		"\u0000\u159b\u159c\u0005\u01d5\u0000\u0000\u159c\u15b9\u0005\'\u0000\u0000"+
56778 		"\u159d\u159e\u0005\'\u0000\u0000\u159e\u159f\u0005\u01d6\u0000\u0000\u159f"+
56779 		"\u15b9\u0005\'\u0000\u0000\u15a0\u15a1\u0005\'\u0000\u0000\u15a1\u15a2"+
56780 		"\u0005\u01d7\u0000\u0000\u15a2\u15b9\u0005\'\u0000\u0000\u15a3\u15a4\u0005"+
56781 		"\'\u0000\u0000\u15a4\u15a5\u0005\u01d8\u0000\u0000\u15a5\u15b9\u0005\'"+
56782 		"\u0000\u0000\u15a6\u15a7\u0005\'\u0000\u0000\u15a7\u15a8\u0005\u01d9\u0000"+
56783 		"\u0000\u15a8\u15b9\u0005\'\u0000\u0000\u15a9\u15aa\u0005\'\u0000\u0000"+
56784 		"\u15aa\u15ab\u0005\u01da\u0000\u0000\u15ab\u15b9\u0005\'\u0000\u0000\u15ac"+
56785 		"\u15ad\u0005\'\u0000\u0000\u15ad\u15ae\u0005\u01db\u0000\u0000\u15ae\u15b9"+
56786 		"\u0005\'\u0000\u0000\u15af\u15b0\u0005\'\u0000\u0000\u15b0\u15b1\u0005"+
56787 		"\u01dc\u0000\u0000\u15b1\u15b9\u0005\'\u0000\u0000\u15b2\u15b3\u0005\'"+
56788 		"\u0000\u0000\u15b3\u15b4\u0005\u01dd\u0000\u0000\u15b4\u15b9\u0005\'\u0000"+
56789 		"\u0000\u15b5\u15b6\u0005\'\u0000\u0000\u15b6\u15b7\u0005\u01de\u0000\u0000"+
56790 		"\u15b7\u15b9\u0005\'\u0000\u0000\u15b8\u1582\u0001\u0000\u0000\u0000\u15b8"+
56791 		"\u1585\u0001\u0000\u0000\u0000\u15b8\u1588\u0001\u0000\u0000\u0000\u15b8"+
56792 		"\u158b\u0001\u0000\u0000\u0000\u15b8\u158e\u0001\u0000\u0000\u0000\u15b8"+
56793 		"\u1591\u0001\u0000\u0000\u0000\u15b8\u1594\u0001\u0000\u0000\u0000\u15b8"+
56794 		"\u1597\u0001\u0000\u0000\u0000\u15b8\u159a\u0001\u0000\u0000\u0000\u15b8"+
56795 		"\u159d\u0001\u0000\u0000\u0000\u15b8\u15a0\u0001\u0000\u0000\u0000\u15b8"+
56796 		"\u15a3\u0001\u0000\u0000\u0000\u15b8\u15a6\u0001\u0000\u0000\u0000\u15b8"+
56797 		"\u15a9\u0001\u0000\u0000\u0000\u15b8\u15ac\u0001\u0000\u0000\u0000\u15b8"+
56798 		"\u15af\u0001\u0000\u0000\u0000\u15b8\u15b2\u0001\u0000\u0000\u0000\u15b8"+
56799 		"\u15b5\u0001\u0000\u0000\u0000\u15b9\u0305\u0001\u0000\u0000\u0000\u15ba"+
56800 		"\u15be\u0005f\u0000\u0000\u15bb\u15bf\u0005\u02b0\u0000\u0000\u15bc\u15bf"+
56801 		"\u0003\u0308\u0184\u0000\u15bd\u15bf\u0003\u030c\u0186\u0000\u15be\u15bb"+
56802 		"\u0001\u0000\u0000\u0000\u15be\u15bc\u0001\u0000\u0000\u0000\u15be\u15bd"+
56803 		"\u0001\u0000\u0000\u0000\u15bf\u0307\u0001\u0000\u0000\u0000\u15c0\u15fb"+
56804 		"\u0005\u015d\u0000\u0000\u15c1\u15c6\u0005\u02b1\u0000\u0000\u15c2\u15c3"+
56805 		"\u0005\u001f\u0000\u0000\u15c3\u15c4\u0003\u001c\u000e\u0000\u15c4\u15c5"+
56806 		"\u0005 \u0000\u0000\u15c5\u15c7\u0001\u0000\u0000\u0000\u15c6\u15c2\u0001"+
56807 		"\u0000\u0000\u0000\u15c6\u15c7\u0001\u0000\u0000\u0000\u15c7\u15ca\u0001"+
56808 		"\u0000\u0000\u0000\u15c8\u15ca\u0005\u0103\u0000\u0000\u15c9\u15c1\u0001"+
56809 		"\u0000\u0000\u0000\u15c9\u15c8\u0001\u0000\u0000\u0000\u15ca\u15e0\u0001"+
56810 		"\u0000\u0000\u0000\u15cb\u15d7\u0003\u030a\u0185\u0000\u15cc\u15d5\u0005"+
56811 		"%\u0000\u0000\u15cd\u15d6\u0005\u02b2\u0000\u0000\u15ce\u15d3\u0005\u02b3"+
56812 		"\u0000\u0000\u15cf\u15d0\u0005\u001f\u0000\u0000\u15d0\u15d1\u0003\u001c"+
56813 		"\u000e\u0000\u15d1\u15d2\u0005 \u0000\u0000\u15d2\u15d4\u0001\u0000\u0000"+
56814 		"\u0000\u15d3\u15cf\u0001\u0000\u0000\u0000\u15d3\u15d4\u0001\u0000\u0000"+
56815 		"\u0000\u15d4\u15d6\u0001\u0000\u0000\u0000\u15d5\u15cd\u0001\u0000\u0000"+
56816 		"\u0000\u15d5\u15ce\u0001\u0000\u0000\u0000\u15d6\u15d8\u0001\u0000\u0000"+
56817 		"\u0000\u15d7\u15cc\u0001\u0000\u0000\u0000\u15d7\u15d8\u0001\u0000\u0000"+
56818 		"\u0000\u15d8\u15de\u0001\u0000\u0000\u0000\u15d9\u15da\u0005%\u0000\u0000"+
56819 		"\u15da\u15dc\u0005\u02b4\u0000\u0000\u15db\u15dd\u0007R\u0000\u0000\u15dc"+
56820 		"\u15db\u0001\u0000\u0000\u0000\u15dc\u15dd\u0001\u0000\u0000\u0000\u15dd"+
56821 		"\u15df\u0001\u0000\u0000\u0000\u15de\u15d9\u0001\u0000\u0000\u0000\u15de"+
56822 		"\u15df\u0001\u0000\u0000\u0000\u15df\u15e1\u0001\u0000\u0000\u0000\u15e0"+
56823 		"\u15cb\u0001\u0000\u0000\u0000\u15e0\u15e1\u0001\u0000\u0000\u0000\u15e1"+
56824 		"\u15fc\u0001\u0000\u0000\u0000\u15e2\u15e8\u0005\u02b7\u0000\u0000\u15e3"+
56825 		"\u15e6\u0003\u030a\u0185\u0000\u15e4\u15e5\u0005%\u0000\u0000\u15e5\u15e7"+
56826 		"\u0005\u02b2\u0000\u0000\u15e6\u15e4\u0001\u0000\u0000\u0000\u15e6\u15e7"+
56827 		"\u0001\u0000\u0000\u0000\u15e7\u15e9\u0001\u0000\u0000\u0000\u15e8\u15e3"+
56828 		"\u0001\u0000\u0000\u0000\u15e8\u15e9\u0001\u0000\u0000\u0000\u15e9\u15fc"+
56829 		"\u0001\u0000\u0000\u0000\u15ea\u15ef\u0005\u02b8\u0000\u0000\u15eb\u15ec"+
56830 		"\u0005\u001f\u0000\u0000\u15ec\u15ed\u0003\u001c\u000e\u0000\u15ed\u15ee"+
56831 		"\u0005 \u0000\u0000\u15ee\u15f0\u0001\u0000\u0000\u0000\u15ef\u15eb\u0001"+
56832 		"\u0000\u0000\u0000\u15ef\u15f0\u0001\u0000\u0000\u0000\u15f0\u15f9\u0001"+
56833 		"\u0000\u0000\u0000\u15f1\u15f7\u0003\u030a\u0185\u0000\u15f2\u15f3\u0005"+
56834 		"%\u0000\u0000\u15f3\u15f5\u0005\u02b4\u0000\u0000\u15f4\u15f6\u0007R\u0000"+
56835 		"\u0000\u15f5\u15f4\u0001\u0000\u0000\u0000\u15f5\u15f6\u0001\u0000\u0000"+
56836 		"\u0000\u15f6\u15f8\u0001\u0000\u0000\u0000\u15f7\u15f2\u0001\u0000\u0000"+
56837 		"\u0000\u15f7\u15f8\u0001\u0000\u0000\u0000\u15f8\u15fa\u0001\u0000\u0000"+
56838 		"\u0000\u15f9\u15f1\u0001\u0000\u0000\u0000\u15f9\u15fa\u0001\u0000\u0000"+
56839 		"\u0000\u15fa\u15fc\u0001\u0000\u0000\u0000\u15fb\u15c9\u0001\u0000\u0000"+
56840 		"\u0000\u15fb\u15e2\u0001\u0000\u0000\u0000\u15fb\u15ea\u0001\u0000\u0000"+
56841 		"\u0000\u15fc\u0309\u0001\u0000\u0000\u0000\u15fd\u15fe\u0005%\u0000\u0000"+
56842 		"\u15fe\u15ff\u0005\u00ea\u0000\u0000\u15ff\u1601\u0005\u02b9\u0000\u0000"+
56843 		"\u1600\u15fd\u0001\u0000\u0000\u0000\u1600\u1601\u0001\u0000\u0000\u0000"+
56844 		"\u1601\u1604\u0001\u0000\u0000\u0000\u1602\u1603\u0005%\u0000\u0000\u1603"+
56845 		"\u1605\u0005\u00b0\u0000\u0000\u1604\u1602\u0001\u0000\u0000\u0000\u1604"+
56846 		"\u1605\u0001\u0000\u0000\u0000\u1605\u160e\u0001\u0000\u0000\u0000\u1606"+
56847 		"\u1607\u0005%\u0000\u0000\u1607\u160c\u0005\u02ba\u0000\u0000\u1608\u1609"+
56848 		"\u0005\u001f\u0000\u0000\u1609\u160a\u0003\u001c\u000e\u0000\u160a\u160b"+
56849 		"\u0005 \u0000\u0000\u160b\u160d\u0001\u0000\u0000\u0000\u160c\u1608\u0001"+
56850 		"\u0000\u0000\u0000\u160c\u160d\u0001\u0000\u0000\u0000\u160d\u160f\u0001"+
56851 		"\u0000\u0000\u0000\u160e\u1606\u0001\u0000\u0000\u0000\u160e\u160f\u0001"+
56852 		"\u0000\u0000\u0000\u160f\u030b\u0001\u0000\u0000\u0000\u1610\u1611\u0005"+
56853 		"\u02bb\u0000\u0000\u1611\u1624\u0007S\u0000\u0000\u1612\u1613\u0005%\u0000"+
56854 		"\u0000\u1613\u1618\u0005\u02ba\u0000\u0000\u1614\u1615\u0005\u001f\u0000"+
56855 		"\u0000\u1615\u1616\u0003\u001c\u000e\u0000\u1616\u1617\u0005 \u0000\u0000"+
56856 		"\u1617\u1619\u0001\u0000\u0000\u0000\u1618\u1614\u0001\u0000\u0000\u0000"+
56857 		"\u1618\u1619\u0001\u0000\u0000\u0000\u1619\u161b\u0001\u0000\u0000\u0000"+
56858 		"\u161a\u1612\u0001\u0000\u0000\u0000\u161a\u161b\u0001\u0000\u0000\u0000"+
56859 		"\u161b\u161e\u0001\u0000\u0000\u0000\u161c\u161d\u0005%\u0000\u0000\u161d"+
56860 		"\u161f\u0005\u02bc\u0000\u0000\u161e\u161c\u0001\u0000\u0000\u0000\u161e"+
56861 		"\u161f\u0001\u0000\u0000\u0000\u161f\u1622\u0001\u0000\u0000\u0000\u1620"+
56862 		"\u1621\u0005%\u0000\u0000\u1621\u1623\u0005\u02bd\u0000\u0000\u1622\u1620"+
56863 		"\u0001\u0000\u0000\u0000\u1622\u1623\u0001\u0000\u0000\u0000\u1623\u1625"+
56864 		"\u0001\u0000\u0000\u0000\u1624\u161a\u0001\u0000\u0000\u0000\u1624\u1625"+
56865 		"\u0001\u0000\u0000\u0000\u1625\u030d\u0001\u0000\u0000\u0000\u1626\u162b"+
56866 		"\u0005M\u0000\u0000\u1627\u1629\u0003\u0310\u0188\u0000\u1628\u162a\u0005"+
56867 		"%\u0000\u0000\u1629\u1628\u0001\u0000\u0000\u0000\u1629\u162a\u0001\u0000"+
56868 		"\u0000\u0000\u162a\u162c\u0001\u0000\u0000\u0000\u162b\u1627\u0001\u0000"+
56869 		"\u0000\u0000\u162b\u162c\u0001\u0000\u0000\u0000\u162c\u162e\u0001\u0000"+
56870 		"\u0000\u0000\u162d\u162f\u0003\u02f4\u017a\u0000\u162e\u162d\u0001\u0000"+
56871 		"\u0000\u0000\u162e\u162f\u0001\u0000\u0000\u0000\u162f\u030f\u0001\u0000"+
56872 		"\u0000\u0000\u1630\u1631\u0005\u02be\u0000\u0000\u1631\u1632\u0005\u001f"+
56873 		"\u0000\u0000\u1632\u1637\u0003\u0312\u0189\u0000\u1633\u1634\u0005%\u0000"+
56874 		"\u0000\u1634\u1636\u0003\u0312\u0189\u0000\u1635\u1633\u0001\u0000\u0000"+
56875 		"\u0000\u1636\u1639\u0001\u0000\u0000\u0000\u1637\u1635\u0001\u0000\u0000"+
56876 		"\u0000\u1637\u1638\u0001\u0000\u0000\u0000\u1638\u163a\u0001\u0000\u0000"+
56877 		"\u0000\u1639\u1637\u0001\u0000\u0000\u0000\u163a\u163b\u0005 \u0000\u0000"+
56878 		"\u163b\u0311\u0001\u0000\u0000\u0000\u163c\u163d\u0003\u0314\u018a\u0000"+
56879 		"\u163d\u163e\u0005`\u0000\u0000\u163e\u163f\u0003\u0316\u018b\u0000\u163f"+
56880 		"\u1642\u0001\u0000\u0000\u0000\u1640\u1642\u0003\u0318\u018c\u0000\u1641"+
56881 		"\u163c\u0001\u0000\u0000\u0000\u1641\u1640\u0001\u0000\u0000\u0000\u1642"+
56882 		"\u0313\u0001\u0000\u0000\u0000\u1643\u1644\u0003\u001c\u000e\u0000\u1644"+
56883 		"\u0315\u0001\u0000\u0000\u0000\u1645\u1646\u0003*\u0015\u0000\u1646\u0317"+
56884 		"\u0001\u0000\u0000\u0000\u1647\u1648\u0005\u009a\u0000\u0000\u1648\u1649"+
56885 		"\u0003\u0314\u018a\u0000\u1649\u0319\u0001\u0000\u0000\u0000\u164a\u164d"+
56886 		"\u00057\u0000\u0000\u164b\u164e\u0003\u031c\u018e\u0000\u164c\u164e\u0003"+
56887 		"\u031e\u018f\u0000\u164d\u164b\u0001\u0000\u0000\u0000\u164d\u164c\u0001"+
56888 		"\u0000\u0000\u0000\u164e\u031b\u0001\u0000\u0000\u0000\u164f\u1652\u0003"+
56889 		"\u0320\u0190\u0000\u1650\u1651\u0005a\u0000\u0000\u1651\u1653\u0003\u0322"+
56890 		"\u0191\u0000\u1652\u1650\u0001\u0000\u0000\u0000\u1652\u1653\u0001\u0000"+
56891 		"\u0000\u0000\u1653\u1654\u0001\u0000\u0000\u0000\u1654\u1655\u0005g\u0000"+
56892 		"\u0000\u1655\u165a\u0003\u032a\u0195\u0000\u1656\u1657\u0005%\u0000\u0000"+
56893 		"\u1657\u1659\u0003\u032a\u0195\u0000\u1658\u1656\u0001\u0000\u0000\u0000"+
56894 		"\u1659\u165c\u0001\u0000\u0000\u0000\u165a\u1658\u0001\u0000\u0000\u0000"+
56895 		"\u165a\u165b\u0001\u0000\u0000\u0000\u165b\u1660\u0001\u0000\u0000\u0000"+
56896 		"\u165c\u165a\u0001\u0000\u0000\u0000\u165d\u165e\u0005M\u0000\u0000\u165e"+
56897 		"\u165f\u00057\u0000\u0000\u165f\u1661\u0005\u00fa\u0000\u0000\u1660\u165d"+
56898 		"\u0001\u0000\u0000\u0000\u1660\u1661\u0001\u0000\u0000\u0000\u1661\u1664"+
56899 		"\u0001\u0000\u0000\u0000\u1662\u1663\u0005`\u0000\u0000\u1663\u1665\u0003"+
56900 		"\u032a\u0195\u0000\u1664\u1662\u0001\u0000\u0000\u0000\u1664\u1665\u0001"+
56901 		"\u0000\u0000\u0000\u1665\u031d\u0001\u0000\u0000\u0000\u1666\u1669\u0003"+
56902 		"\u0324\u0192\u0000\u1667\u1668\u0005a\u0000\u0000\u1668\u166a\u0003\u0326"+
56903 		"\u0193\u0000\u1669\u1667\u0001\u0000\u0000\u0000\u1669\u166a\u0001\u0000"+
56904 		"\u0000\u0000\u166a\u166b\u0001\u0000\u0000\u0000\u166b\u166c\u0005g\u0000"+
56905 		"\u0000\u166c\u1671\u0003\u032a\u0195\u0000\u166d\u166e\u0005%\u0000\u0000"+
56906 		"\u166e\u1670\u0003\u032a\u0195\u0000\u166f\u166d\u0001\u0000\u0000\u0000"+
56907 		"\u1670\u1673\u0001\u0000\u0000\u0000\u1671\u166f\u0001\u0000\u0000\u0000"+
56908 		"\u1671\u1672\u0001\u0000\u0000\u0000\u1672\u1677\u0001\u0000\u0000\u0000"+
56909 		"\u1673\u1671\u0001\u0000\u0000\u0000\u1674\u1675\u0005M\u0000\u0000\u1675"+
56910 		"\u1676\u00057\u0000\u0000\u1676\u1678\u0005\u00fa\u0000\u0000\u1677\u1674"+
56911 		"\u0001\u0000\u0000\u0000\u1677\u1678\u0001\u0000\u0000\u0000\u1678\u031f"+
56912 		"\u0001\u0000\u0000\u0000\u1679\u167b\u0003\u033a\u019d\u0000\u167a\u167c"+
56913 		"\u0003P(\u0000\u167b\u167a\u0001\u0000\u0000\u0000\u167b\u167c\u0001\u0000"+
56914 		"\u0000\u0000\u167c\u1684\u0001\u0000\u0000\u0000\u167d\u167e\u0005%\u0000"+
56915 		"\u0000\u167e\u1680\u0003\u033a\u019d\u0000\u167f\u1681\u0003P(\u0000\u1680"+
56916 		"\u167f\u0001\u0000\u0000\u0000\u1680\u1681\u0001\u0000\u0000\u0000\u1681"+
56917 		"\u1683\u0001\u0000\u0000\u0000\u1682\u167d\u0001\u0000\u0000\u0000\u1683"+
56918 		"\u1686\u0001\u0000\u0000\u0000\u1684\u1682\u0001\u0000\u0000\u0000\u1684"+
56919 		"\u1685\u0001\u0000\u0000\u0000\u1685\u0321\u0001\u0000\u0000\u0000\u1686"+
56920 		"\u1684\u0001\u0000\u0000\u0000\u1687\u1688\u0003\u0378\u01bc\u0000\u1688"+
56921 		"\u1689\u0005\u000e\u0000\u0000\u1689\u168a\u0005\u000e\u0000\u0000\u168a"+
56922 		"\u168c\u0001\u0000\u0000\u0000\u168b\u1687\u0001\u0000\u0000\u0000\u168b"+
56923 		"\u168c\u0001\u0000\u0000\u0000\u168c\u168d\u0001\u0000\u0000\u0000\u168d"+
56924 		"\u168e\u0003\u0328\u0194\u0000\u168e\u0323\u0001\u0000\u0000\u0000\u168f"+
56925 		"\u1694\u0003\u033a\u019d\u0000\u1690\u1691\u0005%\u0000\u0000\u1691\u1693"+
56926 		"\u0003\u033a\u019d\u0000\u1692\u1690\u0001\u0000\u0000\u0000\u1693\u1696"+
56927 		"\u0001\u0000\u0000\u0000\u1694\u1692\u0001\u0000\u0000\u0000\u1694\u1695"+
56928 		"\u0001\u0000\u0000\u0000\u1695\u0325\u0001\u0000\u0000\u0000\u1696\u1694"+
56929 		"\u0001\u0000\u0000\u0000\u1697\u1698\u0003\u037a\u01bd\u0000\u1698\u1699"+
56930 		"\u0005\u000e\u0000\u0000\u1699\u169a\u0005\u000e\u0000\u0000\u169a\u169c"+
56931 		"\u0001\u0000\u0000\u0000\u169b\u1697\u0001\u0000\u0000\u0000\u169b\u169c"+
56932 		"\u0001\u0000\u0000\u0000\u169c\u169d\u0001\u0000\u0000\u0000\u169d\u169e"+
56933 		"\u0003\u0328\u0194\u0000\u169e\u0327\u0001\u0000\u0000\u0000\u169f\u16a0"+
56934 		"\u0003L&\u0000\u16a0\u16a1\u0005\u0014\u0000\u0000\u16a1\u16a3\u0001\u0000"+
56935 		"\u0000\u0000\u16a2\u169f\u0001\u0000\u0000\u0000\u16a2\u16a3\u0001\u0000"+
56936 		"\u0000\u0000\u16a3\u16a4\u0001\u0000\u0000\u0000\u16a4\u16a5\u0003N\'"+
56937 		"\u0000\u16a5\u0329\u0001\u0000\u0000\u0000\u16a6\u16a7\u0003\u0398\u01cc"+
56938 		"\u0000\u16a7\u032b\u0001\u0000\u0000\u0000\u16a8\u16ae\u00058\u0000\u0000"+
56939 		"\u16a9\u16ab\u0003\u0338\u019c\u0000\u16aa\u16a9\u0001\u0000\u0000\u0000"+
56940 		"\u16aa\u16ab\u0001\u0000\u0000\u0000\u16ab\u16ac\u0001\u0000\u0000\u0000"+
56941 		"\u16ac\u16af\u0003\u032e\u0197\u0000\u16ad\u16af\u0003\u0330\u0198\u0000"+
56942 		"\u16ae\u16aa\u0001\u0000\u0000\u0000\u16ae\u16ad\u0001\u0000\u0000\u0000"+
56943 		"\u16af\u032d\u0001\u0000\u0000\u0000\u16b0\u16b3\u0003\u0320\u0190\u0000"+
56944 		"\u16b1\u16b2\u0005a\u0000\u0000\u16b2\u16b4\u0003\u0322\u0191\u0000\u16b3"+
56945 		"\u16b1\u0001\u0000\u0000\u0000\u16b3\u16b4\u0001\u0000\u0000\u0000\u16b4"+
56946 		"\u16b5\u0001\u0000\u0000\u0000\u16b5\u16b6\u0007T\u0000\u0000\u16b6\u16bb"+
56947 		"\u0003\u032a\u0195\u0000\u16b7\u16b8\u0005%\u0000\u0000\u16b8\u16ba\u0003"+
56948 		"\u032a\u0195\u0000\u16b9\u16b7\u0001\u0000\u0000\u0000\u16ba\u16bd\u0001"+
56949 		"\u0000\u0000\u0000\u16bb\u16b9\u0001\u0000\u0000\u0000\u16bb\u16bc\u0001"+
56950 		"\u0000\u0000\u0000\u16bc\u16bf\u0001\u0000\u0000\u0000\u16bd\u16bb\u0001"+
56951 		"\u0000\u0000\u0000\u16be\u16c0\u0005\u00f6\u0000\u0000\u16bf\u16be\u0001"+
56952 		"\u0000\u0000\u0000\u16bf\u16c0\u0001\u0000\u0000\u0000\u16c0\u16c3\u0001"+
56953 		"\u0000\u0000\u0000\u16c1\u16c2\u0005`\u0000\u0000\u16c2\u16c4\u0003\u032a"+
56954 		"\u0195\u0000\u16c3\u16c1\u0001\u0000\u0000\u0000\u16c3\u16c4\u0001\u0000"+
56955 		"\u0000\u0000\u16c4\u032f\u0001\u0000\u0000\u0000\u16c5\u16c8\u0003\u0324"+
56956 		"\u0192\u0000\u16c6\u16c7\u0005a\u0000\u0000\u16c7\u16c9\u0003\u0326\u0193"+
56957 		"\u0000\u16c8\u16c6\u0001\u0000\u0000\u0000\u16c8\u16c9\u0001\u0000\u0000"+
56958 		"\u0000\u16c9\u16ca\u0001\u0000\u0000\u0000\u16ca\u16cb\u0007T\u0000\u0000"+
56959 		"\u16cb\u16d0\u0003\u032a\u0195\u0000\u16cc\u16cd\u0005%\u0000\u0000\u16cd"+
56960 		"\u16cf\u0003\u032a\u0195\u0000\u16ce\u16cc\u0001\u0000\u0000\u0000\u16cf"+
56961 		"\u16d2\u0001\u0000\u0000\u0000\u16d0\u16ce\u0001\u0000\u0000\u0000\u16d0"+
56962 		"\u16d1\u0001\u0000\u0000\u0000\u16d1\u16d4\u0001\u0000\u0000\u0000\u16d2"+
56963 		"\u16d0\u0001\u0000\u0000\u0000\u16d3\u16d5\u0005\u00f6\u0000\u0000\u16d4"+
56964 		"\u16d3\u0001\u0000\u0000\u0000\u16d4\u16d5\u0001\u0000\u0000\u0000\u16d5"+
56965 		"\u0331\u0001\u0000\u0000\u0000\u16d6\u16d9\u0005\u0110\u0000\u0000\u16d7"+
56966 		"\u16da\u0003\u0334\u019a\u0000\u16d8\u16da\u0003\u0336\u019b\u0000\u16d9"+
56967 		"\u16d7\u0001\u0000\u0000\u0000\u16d9\u16d8\u0001\u0000\u0000\u0000\u16da"+
56968 		"\u0333\u0001\u0000\u0000\u0000\u16db\u16de\u0003\u0320\u0190\u0000\u16dc"+
56969 		"\u16dd\u0005a\u0000\u0000\u16dd\u16df\u0003\u0322\u0191\u0000\u16de\u16dc"+
56970 		"\u0001\u0000\u0000\u0000\u16de\u16df\u0001\u0000\u0000\u0000\u16df\u16e0"+
56971 		"\u0001\u0000\u0000\u0000\u16e0\u16e1\u0005g\u0000\u0000\u16e1\u16e6\u0003"+
56972 		"\u032a\u0195\u0000\u16e2\u16e3\u0005%\u0000\u0000\u16e3\u16e5\u0003\u032a"+
56973 		"\u0195\u0000\u16e4\u16e2\u0001\u0000\u0000\u0000\u16e5\u16e8\u0001\u0000"+
56974 		"\u0000\u0000\u16e6\u16e4\u0001\u0000\u0000\u0000\u16e6\u16e7\u0001\u0000"+
56975 		"\u0000\u0000\u16e7\u16ea\u0001\u0000\u0000\u0000\u16e8\u16e6\u0001\u0000"+
56976 		"\u0000\u0000\u16e9\u16eb\u0005\u00f6\u0000\u0000\u16ea\u16e9\u0001\u0000"+
56977 		"\u0000\u0000\u16ea\u16eb\u0001\u0000\u0000\u0000\u16eb\u16ee\u0001\u0000"+
56978 		"\u0000\u0000\u16ec\u16ed\u0005`\u0000\u0000\u16ed\u16ef\u0003\u032a\u0195"+
56979 		"\u0000\u16ee\u16ec\u0001\u0000\u0000\u0000\u16ee\u16ef\u0001\u0000\u0000"+
56980 		"\u0000\u16ef\u0335\u0001\u0000\u0000\u0000\u16f0\u16f3\u0003\u0324\u0192"+
56981 		"\u0000\u16f1\u16f2\u0005a\u0000\u0000\u16f2\u16f4\u0003\u0326\u0193\u0000"+
56982 		"\u16f3\u16f1\u0001\u0000\u0000\u0000\u16f3\u16f4\u0001\u0000\u0000\u0000"+
56983 		"\u16f4\u16f5\u0001\u0000\u0000\u0000\u16f5\u16f6\u0005g\u0000\u0000\u16f6"+
56984 		"\u16fb\u0003\u032a\u0195\u0000\u16f7\u16f8\u0005%\u0000\u0000\u16f8\u16fa"+
56985 		"\u0003\u032a\u0195\u0000\u16f9\u16f7\u0001\u0000\u0000\u0000\u16fa\u16fd"+
56986 		"\u0001\u0000\u0000\u0000\u16fb\u16f9\u0001\u0000\u0000\u0000\u16fb\u16fc"+
56987 		"\u0001\u0000\u0000\u0000\u16fc\u16ff\u0001\u0000\u0000\u0000\u16fd\u16fb"+
56988 		"\u0001\u0000\u0000\u0000\u16fe\u1700\u0005\u00f6\u0000\u0000\u16ff\u16fe"+
56989 		"\u0001\u0000\u0000\u0000\u16ff\u1700\u0001\u0000\u0000\u0000\u1700\u0337"+
56990 		"\u0001\u0000\u0000\u0000\u1701\u1702\u00057\u0000\u0000\u1702\u1703\u0005"+
56991 		"\u00fa\u0000\u0000\u1703\u1704\u0005f\u0000\u0000\u1704\u0339\u0001\u0000"+
56992 		"\u0000\u0000\u1705\u1707\u0005r\u0000\u0000\u1706\u1708\u0005\u00fb\u0000"+
56993 		"\u0000\u1707\u1706\u0001\u0000\u0000\u0000\u1707\u1708\u0001\u0000\u0000"+
56994 		"\u0000\u1708\u171d\u0001\u0000\u0000\u0000\u1709\u171d\u0003\u0366\u01b3"+
56995 		"\u0000\u170a\u171d\u0003\u0364\u01b2\u0000\u170b\u171d\u0003\u0368\u01b4"+
56996 		"\u0000\u170c\u171d\u0003\u0360\u01b0\u0000\u170d\u171d\u0003\u033c\u019e"+
56997 		"\u0000\u170e\u171d\u0003\u0374\u01ba\u0000\u170f\u171d\u0003\u0342\u01a1"+
56998 		"\u0000\u1710\u171d\u0003\u0344\u01a2\u0000\u1711\u171d\u0003\u034c\u01a6"+
56999 		"\u0000\u1712\u171d\u0003\u035e\u01af\u0000\u1713\u171d\u0003\u036a\u01b5"+
57000 		"\u0000\u1714\u171d\u0003\u034e\u01a7\u0000\u1715\u171d\u0003\u0350\u01a8"+
57001 		"\u0000\u1716\u171d\u0003\u033e\u019f\u0000\u1717\u171d\u0003\u0340\u01a0"+
57002 		"\u0000\u1718\u171d\u0003\u0352\u01a9\u0000\u1719\u171d\u0003\u0362\u01b1"+
57003 		"\u0000\u171a\u171d\u0003\u0370\u01b8\u0000\u171b\u171d\u0003\u0372\u01b9"+
57004 		"\u0000\u171c\u1705\u0001\u0000\u0000\u0000\u171c\u1709\u0001\u0000\u0000"+
57005 		"\u0000\u171c\u170a\u0001\u0000\u0000\u0000\u171c\u170b\u0001\u0000\u0000"+
57006 		"\u0000\u171c\u170c\u0001\u0000\u0000\u0000\u171c\u170d\u0001\u0000\u0000"+
57007 		"\u0000\u171c\u170e\u0001\u0000\u0000\u0000\u171c\u170f\u0001\u0000\u0000"+
57008 		"\u0000\u171c\u1710\u0001\u0000\u0000\u0000\u171c\u1711\u0001\u0000\u0000"+
57009 		"\u0000\u171c\u1712\u0001\u0000\u0000\u0000\u171c\u1713\u0001\u0000\u0000"+
57010 		"\u0000\u171c\u1714\u0001\u0000\u0000\u0000\u171c\u1715\u0001\u0000\u0000"+
57011 		"\u0000\u171c\u1716\u0001\u0000\u0000\u0000\u171c\u1717\u0001\u0000\u0000"+
57012 		"\u0000\u171c\u1718\u0001\u0000\u0000\u0000\u171c\u1719\u0001\u0000\u0000"+
57013 		"\u0000\u171c\u171a\u0001\u0000\u0000\u0000\u171c\u171b\u0001\u0000\u0000"+
57014 		"\u0000\u171d\u033b\u0001\u0000\u0000\u0000\u171e\u172f\u00053\u0000\u0000"+
57015 		"\u171f\u172f\u0005\u0144\u0000\u0000\u1720\u172f\u00051\u0000\u0000\u1721"+
57016 		"\u172f\u0005\u013e\u0000\u0000\u1722\u172f\u0005/\u0000\u0000\u1723\u172f"+
57017 		"\u0005\u014e\u0000\u0000\u1724\u172f\u0005\u00fc\u0000\u0000\u1725\u172f"+
57018 		"\u0005.\u0000\u0000\u1726\u1727\u0005\u0146\u0000\u0000\u1727\u172f\u0005"+
57019 		"\u0147\u0000\u0000\u1728\u172f\u00050\u0000\u0000\u1729\u172a\u0005J\u0000"+
57020 		"\u0000\u172a\u172b\u0005\u014f\u0000\u0000\u172b\u172f\u0005\u0151\u0000"+
57021 		"\u0000\u172c\u172d\u0005J\u0000\u0000\u172d\u172f\u0005\u0148\u0000\u0000"+
57022 		"\u172e\u171e\u0001\u0000\u0000\u0000\u172e\u171f\u0001\u0000\u0000\u0000"+
57023 		"\u172e\u1720\u0001\u0000\u0000\u0000\u172e\u1721\u0001\u0000\u0000\u0000"+
57024 		"\u172e\u1722\u0001\u0000\u0000\u0000\u172e\u1723\u0001\u0000\u0000\u0000"+
57025 		"\u172e\u1724\u0001\u0000\u0000\u0000\u172e\u1725\u0001\u0000\u0000\u0000"+
57026 		"\u172e\u1726\u0001\u0000\u0000\u0000\u172e\u1728\u0001\u0000\u0000\u0000"+
57027 		"\u172e\u1729\u0001\u0000\u0000\u0000\u172e\u172c\u0001\u0000\u0000\u0000"+
57028 		"\u172f\u033d\u0001\u0000\u0000\u0000\u1730\u1731\u0005\u0163\u0000\u0000"+
57029 		"\u1731\u1732\u0005\u0164\u0000\u0000\u1732\u177e\u0005\u0165\u0000\u0000"+
57030 		"\u1733\u1739\u00053\u0000\u0000\u1734\u173a\u0005\u0152\u0000\u0000\u1735"+
57031 		"\u173a\u0005\u0153\u0000\u0000\u1736\u173a\u0005\u0150\u0000\u0000\u1737"+
57032 		"\u1738\u0005\u014d\u0000\u0000\u1738\u173a\u0005\u0154\u0000\u0000\u1739"+
57033 		"\u1734\u0001\u0000\u0000\u0000\u1739\u1735\u0001\u0000\u0000\u0000\u1739"+
57034 		"\u1736\u0001\u0000\u0000\u0000\u1739\u1737\u0001\u0000\u0000\u0000\u173a"+
57035 		"\u177e\u0001\u0000\u0000\u0000\u173b\u173c\u00053\u0000\u0000\u173c\u174e"+
57036 		"\u0005s\u0000\u0000\u173d\u173e\u0005\u0155\u0000\u0000\u173e\u174f\u0005"+
57037 		"v\u0000\u0000\u173f\u174f\u0005\u0142\u0000\u0000\u1740\u174f\u0005\u0156"+
57038 		"\u0000\u0000\u1741\u174f\u0005\u00cc\u0000\u0000\u1742\u174f\u0005\u0157"+
57039 		"\u0000\u0000\u1743\u1744\u0005\u0158\u0000\u0000\u1744\u174f\u0005\u0159"+
57040 		"\u0000\u0000\u1745\u1746\u0005\u0158\u0000\u0000\u1746\u174f\u0005\u0140"+
57041 		"\u0000\u0000\u1747\u1748\u0005\u015a\u0000\u0000\u1748\u174f\u0005\u014d"+
57042 		"\u0000\u0000\u1749\u174f\u0005\u0122\u0000\u0000\u174a\u174b\u0005\u014d"+
57043 		"\u0000\u0000\u174b\u174f\u0005\u015b\u0000\u0000\u174c\u174d\u0005\u014d"+
57044 		"\u0000\u0000\u174d\u174f\u0005\u00fe\u0000\u0000\u174e\u173d\u0001\u0000"+
57045 		"\u0000\u0000\u174e\u173f\u0001\u0000\u0000\u0000\u174e\u1740\u0001\u0000"+
57046 		"\u0000\u0000\u174e\u1741\u0001\u0000\u0000\u0000\u174e\u1742\u0001\u0000"+
57047 		"\u0000\u0000\u174e\u1743\u0001\u0000\u0000\u0000\u174e\u1745\u0001\u0000"+
57048 		"\u0000\u0000\u174e\u1747\u0001\u0000\u0000\u0000\u174e\u1749\u0001\u0000"+
57049 		"\u0000\u0000\u174e\u174a\u0001\u0000\u0000\u0000\u174e\u174c\u0001\u0000"+
57050 		"\u0000\u0000\u174f\u177e\u0001\u0000\u0000\u0000\u1750\u1751\u0005\u0160"+
57051 		"\u0000\u0000\u1751\u177e\u0005\u014d\u0000\u0000\u1752\u1753\u0005\u0141"+
57052 		"\u0000\u0000\u1753\u1754\u0005s\u0000\u0000\u1754\u177e\u0005\u00cc\u0000"+
57053 		"\u0000\u1755\u1756\u0005\u0141\u0000\u0000\u1756\u177e\u0005\u00a4\u0000"+
57054 		"\u0000\u1757\u1758\u0005\u0144\u0000\u0000\u1758\u177e\u0005\u014d\u0000"+
57055 		"\u0000\u1759\u175a\u00052\u0000\u0000\u175a\u175b\u0005s\u0000\u0000\u175b"+
57056 		"\u177e\u0005\u00cc\u0000\u0000\u175c\u1768\u00052\u0000\u0000\u175d\u175e"+
57057 		"\u0005\u0155\u0000\u0000\u175e\u1769\u0005v\u0000\u0000\u175f\u1760\u0005"+
57058 		"\u015c\u0000\u0000\u1760\u1761\u0005\u0158\u0000\u0000\u1761\u1769\u0005"+
57059 		"\u0159\u0000\u0000\u1762\u1769\u0005\u0157\u0000\u0000\u1763\u1764\u0005"+
57060 		"\u014d\u0000\u0000\u1764\u1769\u0005\u00fe\u0000\u0000\u1765\u1766\u0005"+
57061 		"\u0150\u0000\u0000\u1766\u1767\u0005\u0158\u0000\u0000\u1767\u1769\u0005"+
57062 		"\u0159\u0000\u0000\u1768\u175d\u0001\u0000\u0000\u0000\u1768\u175f\u0001"+
57063 		"\u0000\u0000\u0000\u1768\u1762\u0001\u0000\u0000\u0000\u1768\u1763\u0001"+
57064 		"\u0000\u0000\u0000\u1768\u1765\u0001\u0000\u0000\u0000\u1769\u177e\u0001"+
57065 		"\u0000\u0000\u0000\u176a\u176b\u0005\u0161\u0000\u0000\u176b\u176c\u0005"+
57066 		"\u0162\u0000\u0000\u176c\u177e\u0005\u014a\u0000\u0000\u176d\u176e\u0005"+
57067 		"\u015e\u0000\u0000\u176e\u176f\u0005s\u0000\u0000\u176f\u177e\u0005\u0122"+
57068 		"\u0000\u0000\u1770\u1771\u0005.\u0000\u0000\u1771\u1772\u0005r\u0000\u0000"+
57069 		"\u1772\u1773\u0005\u00fd\u0000\u0000\u1773\u177e\u0005\u015f\u0000\u0000"+
57070 		"\u1774\u177e\u0005\u0167\u0000\u0000\u1775\u1776\u0005\u0166\u0000\u0000"+
57071 		"\u1776\u177e\u0005\u014a\u0000\u0000\u1777\u1778\u0005J\u0000\u0000\u1778"+
57072 		"\u1779\u0005s\u0000\u0000\u1779\u177e\u0007U\u0000\u0000\u177a\u177b\u0005"+
57073 		"J\u0000\u0000\u177b\u177c\u0005\u014d\u0000\u0000\u177c\u177e\u0005\u0154"+
57074 		"\u0000\u0000\u177d\u1730\u0001\u0000\u0000\u0000\u177d\u1733\u0001\u0000"+
57075 		"\u0000\u0000\u177d\u173b\u0001\u0000\u0000\u0000\u177d\u1750\u0001\u0000"+
57076 		"\u0000\u0000\u177d\u1752\u0001\u0000\u0000\u0000\u177d\u1755\u0001\u0000"+
57077 		"\u0000\u0000\u177d\u1757\u0001\u0000\u0000\u0000\u177d\u1759\u0001\u0000"+
57078 		"\u0000\u0000\u177d\u175c\u0001\u0000\u0000\u0000\u177d\u176a\u0001\u0000"+
57079 		"\u0000\u0000\u177d\u176d\u0001\u0000\u0000\u0000\u177d\u1770\u0001\u0000"+
57080 		"\u0000\u0000\u177d\u1774\u0001\u0000\u0000\u0000\u177d\u1775\u0001\u0000"+
57081 		"\u0000\u0000\u177d\u1777\u0001\u0000\u0000\u0000\u177d\u177a\u0001\u0000"+
57082 		"\u0000\u0000\u177e\u033f\u0001\u0000\u0000\u0000\u177f\u1781\u0005\u0144"+
57083 		"\u0000\u0000\u1780\u1782\u0005\u014d\u0000\u0000\u1781\u1780\u0001\u0000"+
57084 		"\u0000\u0000\u1781\u1782\u0001\u0000\u0000\u0000\u1782\u1792\u0001\u0000"+
57085 		"\u0000\u0000\u1783\u1792\u0005\u015e\u0000\u0000\u1784\u1786\u0005J\u0000"+
57086 		"\u0000\u1785\u1787\u0005s\u0000\u0000\u1786\u1785\u0001\u0000\u0000\u0000"+
57087 		"\u1786\u1787\u0001\u0000\u0000\u0000\u1787\u1788\u0001\u0000\u0000\u0000"+
57088 		"\u1788\u1792\u0005\u0148\u0000\u0000\u1789\u1792\u00053\u0000\u0000\u178a"+
57089 		"\u178b\u00053\u0000\u0000\u178b\u178f\u0005s\u0000\u0000\u178c\u1790\u0005"+
57090 		"\u0122\u0000\u0000\u178d\u178e\u0005\u014d\u0000\u0000\u178e\u1790\u0005"+
57091 		"\u00fe\u0000\u0000\u178f\u178c\u0001\u0000\u0000\u0000\u178f\u178d\u0001"+
57092 		"\u0000\u0000\u0000\u1790\u1792\u0001\u0000\u0000\u0000\u1791\u177f\u0001"+
57093 		"\u0000\u0000\u0000\u1791\u1783\u0001\u0000\u0000\u0000\u1791\u1784\u0001"+
57094 		"\u0000\u0000\u0000\u1791\u1789\u0001\u0000\u0000\u0000\u1791\u178a\u0001"+
57095 		"\u0000\u0000\u0000\u1792\u0341\u0001\u0000\u0000\u0000\u1793\u1794\u0005"+
57096 		"\u0163\u0000\u0000\u1794\u1795\u0005\u00cc\u0000\u0000\u1795\u1796\u0005"+
57097 		"\u0164\u0000\u0000\u1796\u183b\u0005\u0165\u0000\u0000\u1797\u183b\u0005"+
57098 		"3\u0000\u0000\u1798\u1799\u00053\u0000\u0000\u1799\u183b\u0005\u0150\u0000"+
57099 		"\u0000\u179a\u179b\u00053\u0000\u0000\u179b\u17d5\u0005s\u0000\u0000\u179c"+
57100 		"\u179d\u0005\u0149\u0000\u0000\u179d\u17d6\u0005\u00fe\u0000\u0000\u179e"+
57101 		"\u17d6\u0005\u014a\u0000\u0000\u179f\u17a4\u0005\u014b\u0000\u0000\u17a0"+
57102 		"\u17a4\u0005\u014c\u0000\u0000\u17a1\u17a2\u0005<\u0000\u0000\u17a2\u17a4"+
57103 		"\u0005\u016e\u0000\u0000\u17a3\u179f\u0001\u0000\u0000\u0000\u17a3\u17a0"+
57104 		"\u0001\u0000\u0000\u0000\u17a3\u17a1\u0001\u0000\u0000\u0000\u17a4\u17a5"+
57105 		"\u0001\u0000\u0000\u0000\u17a5\u17d6\u0005C\u0000\u0000\u17a6\u17d6\u0005"+
57106 		"\u016c\u0000\u0000\u17a7\u17d6\u0005\u0142\u0000\u0000\u17a8\u17a9\u0005"+
57107 		"<\u0000\u0000\u17a9\u17aa\u0005\u016f\u0000\u0000\u17aa\u17ab\u0005C\u0000"+
57108 		"\u0000\u17ab\u17d6\u0005\u0148\u0000\u0000\u17ac\u17d6\u0005\u016d\u0000"+
57109 		"\u0000\u17ad\u17b7\u0005\u00cc\u0000\u0000\u17ae\u17b8\u0005\u015b\u0000"+
57110 		"\u0000\u17af\u17b0\u0005\u015c\u0000\u0000\u17b0\u17b8\u0005G\u0000\u0000"+
57111 		"\u17b1\u17b2\u0005\u0158\u0000\u0000\u17b2\u17b8\u0005\u0159\u0000\u0000"+
57112 		"\u17b3\u17b4\u0005\u0158\u0000\u0000\u17b4\u17b8\u0005\u0140\u0000\u0000"+
57113 		"\u17b5\u17b6\u0005\u0168\u0000\u0000\u17b6\u17b8\u0005\u0169\u0000\u0000"+
57114 		"\u17b7\u17ae\u0001\u0000\u0000\u0000\u17b7\u17af\u0001\u0000\u0000\u0000"+
57115 		"\u17b7\u17b1\u0001\u0000\u0000\u0000\u17b7\u17b3\u0001\u0000\u0000\u0000"+
57116 		"\u17b7\u17b5\u0001\u0000\u0000\u0000\u17b7\u17b8\u0001\u0000\u0000\u0000"+
57117 		"\u17b8\u17d6\u0001\u0000\u0000\u0000\u17b9\u17d6\u0005\u016a\u0000\u0000"+
57118 		"\u17ba\u17bb\u0005\u0158\u0000\u0000\u17bb\u17d6\u0007V\u0000\u0000\u17bc"+
57119 		"\u17c2\u0005\u0161\u0000\u0000\u17bd\u17be\u0005\u0170\u0000\u0000\u17be"+
57120 		"\u17c3\u0005\u0171\u0000\u0000\u17bf\u17c0\u0005\u0172\u0000\u0000\u17c0"+
57121 		"\u17c3\u0005\u0173\u0000\u0000\u17c1\u17c3\u0005\u0174\u0000\u0000\u17c2"+
57122 		"\u17bd\u0001\u0000\u0000\u0000\u17c2\u17bf\u0001\u0000\u0000\u0000\u17c2"+
57123 		"\u17c1\u0001\u0000\u0000\u0000\u17c3\u17d6\u0001\u0000\u0000\u0000\u17c4"+
57124 		"\u17c5\u0005\u0175\u0000\u0000\u17c5\u17d6\u0005\u0143\u0000\u0000\u17c6"+
57125 		"\u17d6\u0005\u0176\u0000\u0000\u17c7\u17c8\u0005\u0178\u0000\u0000\u17c8"+
57126 		"\u17d6\u0005\u00b0\u0000\u0000\u17c9\u17ca\u0005\u0179\u0000\u0000\u17ca"+
57127 		"\u17cb\u0005\u016b\u0000\u0000\u17cb\u17d6\u0005\u017a\u0000\u0000\u17cc"+
57128 		"\u17d6\u0005\u00fe\u0000\u0000\u17cd\u17d6\u0005\u017b\u0000\u0000\u17ce"+
57129 		"\u17cf\u0005\u014d\u0000\u0000\u17cf\u17d6\u0005\u015b\u0000\u0000\u17d0"+
57130 		"\u17d6\u00056\u0000\u0000\u17d1\u17d2\u0005\u017c\u0000\u0000\u17d2\u17d6"+
57131 		"\u0005\u017d\u0000\u0000\u17d3\u17d6\u0005\u016b\u0000\u0000\u17d4\u17d6"+
57132 		"\u0005\u00fd\u0000\u0000\u17d5\u179c\u0001\u0000\u0000\u0000\u17d5\u179e"+
57133 		"\u0001\u0000\u0000\u0000\u17d5\u17a3\u0001\u0000\u0000\u0000\u17d5\u17a6"+
57134 		"\u0001\u0000\u0000\u0000\u17d5\u17a7\u0001\u0000\u0000\u0000\u17d5\u17a8"+
57135 		"\u0001\u0000\u0000\u0000\u17d5\u17ac\u0001\u0000\u0000\u0000\u17d5\u17ad"+
57136 		"\u0001\u0000\u0000\u0000\u17d5\u17b9\u0001\u0000\u0000\u0000\u17d5\u17ba"+
57137 		"\u0001\u0000\u0000\u0000\u17d5\u17bc\u0001\u0000\u0000\u0000\u17d5\u17c4"+
57138 		"\u0001\u0000\u0000\u0000\u17d5\u17c6\u0001\u0000\u0000\u0000\u17d5\u17c7"+
57139 		"\u0001\u0000\u0000\u0000\u17d5\u17c9\u0001\u0000\u0000\u0000\u17d5\u17cc"+
57140 		"\u0001\u0000\u0000\u0000\u17d5\u17cd\u0001\u0000\u0000\u0000\u17d5\u17ce"+
57141 		"\u0001\u0000\u0000\u0000\u17d5\u17d0\u0001\u0000\u0000\u0000\u17d5\u17d1"+
57142 		"\u0001\u0000\u0000\u0000\u17d5\u17d3\u0001\u0000\u0000\u0000\u17d5\u17d4"+
57143 		"\u0001\u0000\u0000\u0000\u17d6\u183b\u0001\u0000\u0000\u0000\u17d7\u17d9"+
57144 		"\u0005\u0160\u0000\u0000\u17d8\u17da\u0005\u014d\u0000\u0000\u17d9\u17d8"+
57145 		"\u0001\u0000\u0000\u0000\u17d9\u17da\u0001\u0000\u0000\u0000\u17da\u183b"+
57146 		"\u0001\u0000\u0000\u0000\u17db\u17dc\u0005\u0185\u0000\u0000\u17dc\u183b"+
57147 		"\u0007W\u0000\u0000\u17dd\u183b\u0005\u018b\u0000\u0000\u17de\u183b\u0005"+
57148 		"\u0141\u0000\u0000\u17df\u17e1\u0005\u0141\u0000\u0000\u17e0\u17e2\u0005"+
57149 		"\u0134\u0000\u0000\u17e1\u17e0\u0001\u0000\u0000\u0000\u17e1\u17e2\u0001"+
57150 		"\u0000\u0000\u0000\u17e2\u183b\u0001\u0000\u0000\u0000\u17e3\u17e5\u0005"+
57151 		"\u0144\u0000\u0000\u17e4\u17e6\u0005\u014d\u0000\u0000\u17e5\u17e4\u0001"+
57152 		"\u0000\u0000\u0000\u17e5\u17e6\u0001\u0000\u0000\u0000\u17e6\u183b\u0001"+
57153 		"\u0000\u0000\u0000\u17e7\u180c\u00052\u0000\u0000\u17e8\u180d\u0005\u017e"+
57154 		"\u0000\u0000\u17e9\u180d\u0005\u014a\u0000\u0000\u17ea\u17eb\u0007X\u0000"+
57155 		"\u0000\u17eb\u180d\u0005C\u0000\u0000\u17ec\u180d\u0005\u016c\u0000\u0000"+
57156 		"\u17ed\u180d\u0005\u016d\u0000\u0000\u17ee\u180d\u0005\u00cc\u0000\u0000"+
57157 		"\u17ef\u17f1\u0005\u00cc\u0000\u0000\u17f0\u17ef\u0001\u0000\u0000\u0000"+
57158 		"\u17f0\u17f1\u0001\u0000\u0000\u0000\u17f1\u17f2\u0001\u0000\u0000\u0000"+
57159 		"\u17f2\u17f3\u0005\u015c\u0000\u0000\u17f3\u17f4\u0005\u0158\u0000\u0000"+
57160 		"\u17f4\u180d\u0005\u0159\u0000\u0000\u17f5\u180d\u0005\u009a\u0000\u0000"+
57161 		"\u17f6\u17f7\u0005\u0175\u0000\u0000\u17f7\u180d\u0005\u0143\u0000\u0000"+
57162 		"\u17f8\u180d\u0005F\u0000\u0000\u17f9\u17fa\u0005\u0178\u0000\u0000\u17fa"+
57163 		"\u180d\u0005\u00b0\u0000\u0000\u17fb\u180d\u0005H\u0000\u0000\u17fc\u180d"+
57164 		"\u0005\u017f\u0000\u0000\u17fd\u17fe\u0005\u0179\u0000\u0000\u17fe\u17ff"+
57165 		"\u0005\u016b\u0000\u0000\u17ff\u180d\u0005\u017a\u0000\u0000\u1800\u180d"+
57166 		"\u0005\u00fe\u0000\u0000\u1801\u180d\u0005\u017b\u0000\u0000\u1802\u180d"+
57167 		"\u0005\u0180\u0000\u0000\u1803\u180d\u00056\u0000\u0000\u1804\u180d\u0005"+
57168 		"\u016b\u0000\u0000\u1805\u180d\u0005\u0181\u0000\u0000\u1806\u180d\u0005"+
57169 		";\u0000\u0000\u1807\u180d\u0005\u00b0\u0000\u0000\u1808\u180d\u0005J\u0000"+
57170 		"\u0000\u1809\u180a\u0005\u015d\u0000\u0000\u180a\u180b\u00056\u0000\u0000"+
57171 		"\u180b\u180d\u0005\u0182\u0000\u0000\u180c\u17e8\u0001\u0000\u0000\u0000"+
57172 		"\u180c\u17e9\u0001\u0000\u0000\u0000\u180c\u17ea\u0001\u0000\u0000\u0000"+
57173 		"\u180c\u17ec\u0001\u0000\u0000\u0000\u180c\u17ed\u0001\u0000\u0000\u0000"+
57174 		"\u180c\u17ee\u0001\u0000\u0000\u0000\u180c\u17f0\u0001\u0000\u0000\u0000"+
57175 		"\u180c\u17f5\u0001\u0000\u0000\u0000\u180c\u17f6\u0001\u0000\u0000\u0000"+
57176 		"\u180c\u17f8\u0001\u0000\u0000\u0000\u180c\u17f9\u0001\u0000\u0000\u0000"+
57177 		"\u180c\u17fb\u0001\u0000\u0000\u0000\u180c\u17fc\u0001\u0000\u0000\u0000"+
57178 		"\u180c\u17fd\u0001\u0000\u0000\u0000\u180c\u1800\u0001\u0000\u0000\u0000"+
57179 		"\u180c\u1801\u0001\u0000\u0000\u0000\u180c\u1802\u0001\u0000\u0000\u0000"+
57180 		"\u180c\u1803\u0001\u0000\u0000\u0000\u180c\u1804\u0001\u0000\u0000\u0000"+
57181 		"\u180c\u1805\u0001\u0000\u0000\u0000\u180c\u1806\u0001\u0000\u0000\u0000"+
57182 		"\u180c\u1807\u0001\u0000\u0000\u0000\u180c\u1808\u0001\u0000\u0000\u0000"+
57183 		"\u180c\u1809\u0001\u0000\u0000\u0000\u180d\u183b\u0001\u0000\u0000\u0000"+
57184 		"\u180e\u183b\u00051\u0000\u0000\u180f\u183b\u0005\u013e\u0000\u0000\u1810"+
57185 		"\u1812\u0005\u013e\u0000\u0000\u1811\u1813\u0005s\u0000\u0000\u1812\u1811"+
57186 		"\u0001\u0000\u0000\u0000\u1812\u1813\u0001\u0000\u0000\u0000\u1813\u1814"+
57187 		"\u0001\u0000\u0000\u0000\u1814\u1815\u0005\u0161\u0000\u0000\u1815\u183b"+
57188 		"\u0005\u0183\u0000\u0000\u1816\u183b\u0005/\u0000\u0000\u1817\u1818\u0005"+
57189 		"\u0184\u0000\u0000\u1818\u1819\u0005\u00cc\u0000\u0000\u1819\u183b\u0005"+
57190 		"\u0142\u0000\u0000\u181a\u183b\u0005\u00fc\u0000\u0000\u181b\u183b\u0005"+
57191 		".\u0000\u0000\u181c\u183b\u0005\u0187\u0000\u0000\u181d\u181e\u0005\u0188"+
57192 		"\u0000\u0000\u181e\u181f\u0005\u0189\u0000\u0000\u181f\u183b\u0005\u018a"+
57193 		"\u0000\u0000\u1820\u1821\u0005\u0146\u0000\u0000\u1821\u183b\u0005\u0147"+
57194 		"\u0000\u0000\u1822\u183b\u0005\u0177\u0000\u0000\u1823\u183b\u00050\u0000"+
57195 		"\u0000\u1824\u1825\u0005J\u0000\u0000\u1825\u1826\u0005s\u0000\u0000\u1826"+
57196 		"\u1827\u0005<\u0000\u0000\u1827\u1828\u0007Y\u0000\u0000\u1828\u1829\u0005"+
57197 		"C\u0000\u0000\u1829\u183b\u0005\u0148\u0000\u0000\u182a\u182b\u00052\u0000"+
57198 		"\u0000\u182b\u182f\u0005s\u0000\u0000\u182c\u1830\u0005\u00cc\u0000\u0000"+
57199 		"\u182d\u182e\u0005\u0161\u0000\u0000\u182e\u1830\u0005\u0174\u0000\u0000"+
57200 		"\u182f\u182c\u0001\u0000\u0000\u0000\u182f\u182d\u0001\u0000\u0000\u0000"+
57201 		"\u1830\u183b\u0001\u0000\u0000\u0000\u1831\u1832\u0005J\u0000\u0000\u1832"+
57202 		"\u1833\u0007Z\u0000\u0000\u1833\u183b\u0005\u0154\u0000\u0000\u1834\u1836"+
57203 		"\u0005J\u0000\u0000\u1835\u1837\u0005s\u0000\u0000\u1836\u1835\u0001\u0000"+
57204 		"\u0000\u0000\u1836\u1837\u0001\u0000\u0000\u0000\u1837\u1838\u0001\u0000"+
57205 		"\u0000\u0000\u1838\u183b\u0005\u0148\u0000\u0000\u1839\u183b\u0001\u0000"+
57206 		"\u0000\u0000\u183a\u1793\u0001\u0000\u0000\u0000\u183a\u1797\u0001\u0000"+
57207 		"\u0000\u0000\u183a\u1798\u0001\u0000\u0000\u0000\u183a\u179a\u0001\u0000"+
57208 		"\u0000\u0000\u183a\u17d7\u0001\u0000\u0000\u0000\u183a\u17db\u0001\u0000"+
57209 		"\u0000\u0000\u183a\u17dd\u0001\u0000\u0000\u0000\u183a\u17de\u0001\u0000"+
57210 		"\u0000\u0000\u183a\u17df\u0001\u0000\u0000\u0000\u183a\u17e3\u0001\u0000"+
57211 		"\u0000\u0000\u183a\u17e7\u0001\u0000\u0000\u0000\u183a\u180e\u0001\u0000"+
57212 		"\u0000\u0000\u183a\u180f\u0001\u0000\u0000\u0000\u183a\u1810\u0001\u0000"+
57213 		"\u0000\u0000\u183a\u1816\u0001\u0000\u0000\u0000\u183a\u1817\u0001\u0000"+
57214 		"\u0000\u0000\u183a\u181a\u0001\u0000\u0000\u0000\u183a\u181b\u0001\u0000"+
57215 		"\u0000\u0000\u183a\u181c\u0001\u0000\u0000\u0000\u183a\u181d\u0001\u0000"+
57216 		"\u0000\u0000\u183a\u1820\u0001\u0000\u0000\u0000\u183a\u1822\u0001\u0000"+
57217 		"\u0000\u0000\u183a\u1823\u0001\u0000\u0000\u0000\u183a\u1824\u0001\u0000"+
57218 		"\u0000\u0000\u183a\u182a\u0001\u0000\u0000\u0000\u183a\u1831\u0001\u0000"+
57219 		"\u0000\u0000\u183a\u1834\u0001\u0000\u0000\u0000\u183a\u1839\u0001\u0000"+
57220 		"\u0000\u0000\u183b\u0343\u0001\u0000\u0000\u0000\u183c\u1840\u0003\u0346"+
57221 		"\u01a3\u0000\u183d\u1840\u0003\u0348\u01a4\u0000\u183e\u1840\u0003\u034a"+
57222 		"\u01a5\u0000\u183f\u183c\u0001\u0000\u0000\u0000\u183f\u183d\u0001\u0000"+
57223 		"\u0000\u0000\u183f\u183e\u0001\u0000\u0000\u0000\u1840\u0345\u0001\u0000"+
57224 		"\u0000\u0000\u1841\u184a\u0005\u0144\u0000\u0000\u1842\u184a\u0005\u015e"+
57225 		"\u0000\u0000\u1843\u184a\u00053\u0000\u0000\u1844\u1845\u0005J\u0000\u0000"+
57226 		"\u1845\u184a\u0005\u0148\u0000\u0000\u1846\u1847\u00053\u0000\u0000\u1847"+
57227 		"\u1848\u0005s\u0000\u0000\u1848\u184a\u0005\u00fd\u0000\u0000\u1849\u1841"+
57228 		"\u0001\u0000\u0000\u0000\u1849\u1842\u0001\u0000\u0000\u0000\u1849\u1843"+
57229 		"\u0001\u0000\u0000\u0000\u1849\u1844\u0001\u0000\u0000\u0000\u1849\u1846"+
57230 		"\u0001\u0000\u0000\u0000\u184a\u0347\u0001\u0000\u0000\u0000\u184b\u1855"+
57231 		"\u0005\u0144\u0000\u0000\u184c\u184d\u0005\u0146\u0000\u0000\u184d\u1855"+
57232 		"\u0005\u0147\u0000\u0000\u184e\u1855\u00053\u0000\u0000\u184f\u1850\u0005"+
57233 		"J\u0000\u0000\u1850\u1855\u0005\u0148\u0000\u0000\u1851\u1852\u00053\u0000"+
57234 		"\u0000\u1852\u1853\u0005s\u0000\u0000\u1853\u1855\u0005\u00fe\u0000\u0000"+
57235 		"\u1854\u184b\u0001\u0000\u0000\u0000\u1854\u184c\u0001\u0000\u0000\u0000"+
57236 		"\u1854\u184e\u0001\u0000\u0000\u0000\u1854\u184f\u0001\u0000\u0000\u0000"+
57237 		"\u1854\u1851\u0001\u0000\u0000\u0000\u1855\u0349\u0001\u0000\u0000\u0000"+
57238 		"\u1856\u185f\u0005\u0144\u0000\u0000\u1857\u185f\u00053\u0000\u0000\u1858"+
57239 		"\u1859\u0005J\u0000\u0000\u1859\u185f\u0005\u0148\u0000\u0000\u185a\u185b"+
57240 		"\u00053\u0000\u0000\u185b\u185c\u0005s\u0000\u0000\u185c\u185d\u0005\u0149"+
57241 		"\u0000\u0000\u185d\u185f\u0005\u00fe\u0000\u0000\u185e\u1856\u0001\u0000"+
57242 		"\u0000\u0000\u185e\u1857\u0001\u0000\u0000\u0000\u185e\u1858\u0001\u0000"+
57243 		"\u0000\u0000\u185e\u185a\u0001\u0000\u0000\u0000\u185f\u034b\u0001\u0000"+
57244 		"\u0000\u0000\u1860\u1868\u0005\u0144\u0000\u0000\u1861\u1862\u0005\u0146"+
57245 		"\u0000\u0000\u1862\u1868\u0005\u0147\u0000\u0000\u1863\u1868\u00053\u0000"+
57246 		"\u0000\u1864\u1868\u0005\u00fc\u0000\u0000\u1865\u1866\u0005J\u0000\u0000"+
57247 		"\u1866\u1868\u0005\u0148\u0000\u0000\u1867\u1860\u0001\u0000\u0000\u0000"+
57248 		"\u1867\u1861\u0001\u0000\u0000\u0000\u1867\u1863\u0001\u0000\u0000\u0000"+
57249 		"\u1867\u1864\u0001\u0000\u0000\u0000\u1867\u1865\u0001\u0000\u0000\u0000"+
57250 		"\u1868\u034d\u0001\u0000\u0000\u0000\u1869\u187e\u00053\u0000\u0000\u186a"+
57251 		"\u187e\u0005\u0144\u0000\u0000\u186b\u186c\u00052\u0000\u0000\u186c\u187e"+
57252 		"\u0005\u018c\u0000\u0000\u186d\u187e\u00051\u0000\u0000\u186e\u187e\u0005"+
57253 		"\u013e\u0000\u0000\u186f\u187e\u0005/\u0000\u0000\u1870\u187e\u0005\u00fc"+
57254 		"\u0000\u0000\u1871\u187e\u0005.\u0000\u0000\u1872\u1873\u0005\u0146\u0000"+
57255 		"\u0000\u1873\u187e\u0005\u0147\u0000\u0000\u1874\u187e\u00050\u0000\u0000"+
57256 		"\u1875\u1876\u0005J\u0000\u0000\u1876\u1877\u0005\u014f\u0000\u0000\u1877"+
57257 		"\u187e\u0005\u0151\u0000\u0000\u1878\u1879\u0005J\u0000\u0000\u1879\u187e"+
57258 		"\u0005\u0148\u0000\u0000\u187a\u187b\u00053\u0000\u0000\u187b\u187c\u0005"+
57259 		"s\u0000\u0000\u187c\u187e\u00056\u0000\u0000\u187d\u1869\u0001\u0000\u0000"+
57260 		"\u0000\u187d\u186a\u0001\u0000\u0000\u0000\u187d\u186b\u0001\u0000\u0000"+
57261 		"\u0000\u187d\u186d\u0001\u0000\u0000\u0000\u187d\u186e\u0001\u0000\u0000"+
57262 		"\u0000\u187d\u186f\u0001\u0000\u0000\u0000\u187d\u1870\u0001\u0000\u0000"+
57263 		"\u0000\u187d\u1871\u0001\u0000\u0000\u0000\u187d\u1872\u0001\u0000\u0000"+
57264 		"\u0000\u187d\u1874\u0001\u0000\u0000\u0000\u187d\u1875\u0001\u0000\u0000"+
57265 		"\u0000\u187d\u1878\u0001\u0000\u0000\u0000\u187d\u187a\u0001\u0000\u0000"+
57266 		"\u0000\u187e\u034f\u0001\u0000\u0000\u0000\u187f\u188b\u00053\u0000\u0000"+
57267 		"\u1880\u188b\u0005\u0144\u0000\u0000\u1881\u188b\u0005\u00fc\u0000\u0000"+
57268 		"\u1882\u1883\u0005\u0146\u0000\u0000\u1883\u188b\u0005\u0147\u0000\u0000"+
57269 		"\u1884\u1885\u0005J\u0000\u0000\u1885\u188b\u0005\u0148\u0000\u0000\u1886"+
57270 		"\u1887\u00053\u0000\u0000\u1887\u1888\u0005s\u0000\u0000\u1888\u1889\u0005"+
57271 		"\u0175\u0000\u0000\u1889\u188b\u0005\u0143\u0000\u0000\u188a\u187f\u0001"+
57272 		"\u0000\u0000\u0000\u188a\u1880\u0001\u0000\u0000\u0000\u188a\u1881\u0001"+
57273 		"\u0000\u0000\u0000\u188a\u1882\u0001\u0000\u0000\u0000\u188a\u1884\u0001"+
57274 		"\u0000\u0000\u0000\u188a\u1886\u0001\u0000\u0000\u0000\u188b\u0351\u0001"+
57275 		"\u0000\u0000\u0000\u188c\u1892\u0003\u0354\u01aa\u0000\u188d\u1892\u0003"+
57276 		"\u0356\u01ab\u0000\u188e\u1892\u0003\u0358\u01ac\u0000\u188f\u1892\u0003"+
57277 		"\u035a\u01ad\u0000\u1890\u1892\u0003\u035c\u01ae\u0000\u1891\u188c\u0001"+
57278 		"\u0000\u0000\u0000\u1891\u188d\u0001\u0000\u0000\u0000\u1891\u188e\u0001"+
57279 		"\u0000\u0000\u0000\u1891\u188f\u0001\u0000\u0000\u0000\u1891\u1890\u0001"+
57280 		"\u0000\u0000\u0000\u1892\u0353\u0001\u0000\u0000\u0000\u1893\u189e\u0005"+
57281 		"\u0144\u0000\u0000\u1894\u1895\u0005\u0146\u0000\u0000\u1895\u189e\u0005"+
57282 		"\u0147\u0000\u0000\u1896\u189e\u00053\u0000\u0000\u1897\u189e\u0005\u00fc"+
57283 		"\u0000\u0000\u1898\u1899\u0005J\u0000\u0000\u1899\u189e\u0005\u0148\u0000"+
57284 		"\u0000\u189a\u189b\u00053\u0000\u0000\u189b\u189c\u0005s\u0000\u0000\u189c"+
57285 		"\u189e\u0005\u016d\u0000\u0000\u189d\u1893\u0001\u0000\u0000\u0000\u189d"+
57286 		"\u1894\u0001\u0000\u0000\u0000\u189d\u1896\u0001\u0000\u0000\u0000\u189d"+
57287 		"\u1897\u0001\u0000\u0000\u0000\u189d\u1898\u0001\u0000\u0000\u0000\u189d"+
57288 		"\u189a\u0001\u0000\u0000\u0000\u189e\u0355\u0001\u0000\u0000\u0000\u189f"+
57289 		"\u18ab\u0005\u0144\u0000\u0000\u18a0\u18a1\u0005\u0146\u0000\u0000\u18a1"+
57290 		"\u18ab\u0005\u0147\u0000\u0000\u18a2\u18ab\u00053\u0000\u0000\u18a3\u18ab"+
57291 		"\u0005\u00fc\u0000\u0000\u18a4\u18a5\u0005J\u0000\u0000\u18a5\u18ab\u0005"+
57292 		"\u0148\u0000\u0000\u18a6\u18a7\u00053\u0000\u0000\u18a7\u18a8\u0005s\u0000"+
57293 		"\u0000\u18a8\u18a9\u0005\u0178\u0000\u0000\u18a9\u18ab\u0005\u00b0\u0000"+
57294 		"\u0000\u18aa\u189f\u0001\u0000\u0000\u0000\u18aa\u18a0\u0001\u0000\u0000"+
57295 		"\u0000\u18aa\u18a2\u0001\u0000\u0000\u0000\u18aa\u18a3\u0001\u0000\u0000"+
57296 		"\u0000\u18aa\u18a4\u0001\u0000\u0000\u0000\u18aa\u18a6\u0001\u0000\u0000"+
57297 		"\u0000\u18ab\u0357\u0001\u0000\u0000\u0000\u18ac\u18b8\u0005\u0144\u0000"+
57298 		"\u0000\u18ad\u18ae\u0005\u0146\u0000\u0000\u18ae\u18b8\u0005\u0147\u0000"+
57299 		"\u0000\u18af\u18b8\u00053\u0000\u0000\u18b0\u18b1\u0005J\u0000\u0000\u18b1"+
57300 		"\u18b8\u0005\u0148\u0000\u0000\u18b2\u18b3\u00053\u0000\u0000\u18b3\u18b4"+
57301 		"\u0005s\u0000\u0000\u18b4\u18b5\u0005\u0179\u0000\u0000\u18b5\u18b6\u0005"+
57302 		"\u016b\u0000\u0000\u18b6\u18b8\u0005\u017a\u0000\u0000\u18b7\u18ac\u0001"+
57303 		"\u0000\u0000\u0000\u18b7\u18ad\u0001\u0000\u0000\u0000\u18b7\u18af\u0001"+
57304 		"\u0000\u0000\u0000\u18b7\u18b0\u0001\u0000\u0000\u0000\u18b7\u18b2\u0001"+
57305 		"\u0000\u0000\u0000\u18b8\u0359\u0001\u0000\u0000\u0000\u18b9\u18c3\u0005"+
57306 		"\u0144\u0000\u0000\u18ba\u18bb\u0005\u0146\u0000\u0000\u18bb\u18c3\u0005"+
57307 		"\u0147\u0000\u0000\u18bc\u18c3\u00053\u0000\u0000\u18bd\u18be\u0005J\u0000"+
57308 		"\u0000\u18be\u18c3\u0005\u0148\u0000\u0000\u18bf\u18c0\u00053\u0000\u0000"+
57309 		"\u18c0\u18c1\u0005s\u0000\u0000\u18c1\u18c3\u0005\u017b\u0000\u0000\u18c2"+
57310 		"\u18b9\u0001\u0000\u0000\u0000\u18c2\u18ba\u0001\u0000\u0000\u0000\u18c2"+
57311 		"\u18bc\u0001\u0000\u0000\u0000\u18c2\u18bd\u0001\u0000\u0000\u0000\u18c2"+
57312 		"\u18bf\u0001\u0000\u0000\u0000\u18c3\u035b\u0001\u0000\u0000\u0000\u18c4"+
57313 		"\u18cf\u0005\u0144\u0000\u0000\u18c5\u18c6\u0005\u0146\u0000\u0000\u18c6"+
57314 		"\u18cf\u0005\u0147\u0000\u0000\u18c7\u18cf\u0005\u02a5\u0000\u0000\u18c8"+
57315 		"\u18cf\u00053\u0000\u0000\u18c9\u18ca\u0005J\u0000\u0000\u18ca\u18cf\u0005"+
57316 		"\u0148\u0000\u0000\u18cb\u18cc\u00053\u0000\u0000\u18cc\u18cd\u0005s\u0000"+
57317 		"\u0000\u18cd\u18cf\u0005\u016b\u0000\u0000\u18ce\u18c4\u0001\u0000\u0000"+
57318 		"\u0000\u18ce\u18c5\u0001\u0000\u0000\u0000\u18ce\u18c7\u0001\u0000\u0000"+
57319 		"\u0000\u18ce\u18c8\u0001\u0000\u0000\u0000\u18ce\u18c9\u0001\u0000\u0000"+
57320 		"\u0000\u18ce\u18cb\u0001\u0000\u0000\u0000\u18cf\u035d\u0001\u0000\u0000"+
57321 		"\u0000\u18d0\u18e1\u00053\u0000\u0000\u18d1\u18e1\u0005\u0141\u0000\u0000"+
57322 		"\u18d2\u18d4\u0005\u0144\u0000\u0000\u18d3\u18d5\u0005\u014d\u0000\u0000"+
57323 		"\u18d4\u18d3\u0001\u0000\u0000\u0000\u18d4\u18d5\u0001\u0000\u0000\u0000"+
57324 		"\u18d5\u18e1\u0001\u0000\u0000\u0000\u18d6\u18d7\u0005\u0146\u0000\u0000"+
57325 		"\u18d7\u18e1\u0005\u0147\u0000\u0000\u18d8\u18da\u0005J\u0000\u0000\u18d9"+
57326 		"\u18db\u0005s\u0000\u0000\u18da\u18d9\u0001\u0000\u0000\u0000\u18da\u18db"+
57327 		"\u0001\u0000\u0000\u0000\u18db\u18dc\u0001\u0000\u0000\u0000\u18dc\u18e1"+
57328 		"\u0005\u0148\u0000\u0000\u18dd\u18de\u00053\u0000\u0000\u18de\u18df\u0005"+
57329 		"s\u0000\u0000\u18df\u18e1\u0005\u0157\u0000\u0000\u18e0\u18d0\u0001\u0000"+
57330 		"\u0000\u0000\u18e0\u18d1\u0001\u0000\u0000\u0000\u18e0\u18d2\u0001\u0000"+
57331 		"\u0000\u0000\u18e0\u18d6\u0001\u0000\u0000\u0000\u18e0\u18d8\u0001\u0000"+
57332 		"\u0000\u0000\u18e0\u18dd\u0001\u0000\u0000\u0000\u18e1\u035f\u0001\u0000"+
57333 		"\u0000\u0000\u18e2\u18ed\u0005\u0144\u0000\u0000\u18e3\u18e4\u0005\u0146"+
57334 		"\u0000\u0000\u18e4\u18ed\u0005\u0147\u0000\u0000\u18e5\u18ed\u00053\u0000"+
57335 		"\u0000\u18e6\u18ed\u0005\u00fc\u0000\u0000\u18e7\u18e8\u0005J\u0000\u0000"+
57336 		"\u18e8\u18ed\u0005\u0148\u0000\u0000\u18e9\u18ea\u00053\u0000\u0000\u18ea"+
57337 		"\u18eb\u0005s\u0000\u0000\u18eb\u18ed\u0005\u016c\u0000\u0000\u18ec\u18e2"+
57338 		"\u0001\u0000\u0000\u0000\u18ec\u18e3\u0001\u0000\u0000\u0000\u18ec\u18e5"+
57339 		"\u0001\u0000\u0000\u0000\u18ec\u18e6\u0001\u0000\u0000\u0000\u18ec\u18e7"+
57340 		"\u0001\u0000\u0000\u0000\u18ec\u18e9\u0001\u0000\u0000\u0000\u18ed\u0361"+
57341 		"\u0001\u0000\u0000\u0000\u18ee\u18fa\u00053\u0000\u0000\u18ef\u18fa\u0005"+
57342 		"\u0144\u0000\u0000\u18f0\u18fa\u0005\u00fc\u0000\u0000\u18f1\u18f2\u0005"+
57343 		"\u0146\u0000\u0000\u18f2\u18fa\u0005\u0147\u0000\u0000\u18f3\u18f4\u0005"+
57344 		"J\u0000\u0000\u18f4\u18fa\u0005\u0148\u0000\u0000\u18f5\u18f6\u00053\u0000"+
57345 		"\u0000\u18f6\u18f7\u0005s\u0000\u0000\u18f7\u18f8\u0005\u014b\u0000\u0000"+
57346 		"\u18f8\u18fa\u0005C\u0000\u0000\u18f9\u18ee\u0001\u0000\u0000\u0000\u18f9"+
57347 		"\u18ef\u0001\u0000\u0000\u0000\u18f9\u18f0\u0001\u0000\u0000\u0000\u18f9"+
57348 		"\u18f1\u0001\u0000\u0000\u0000\u18f9\u18f3\u0001\u0000\u0000\u0000\u18f9"+
57349 		"\u18f5\u0001\u0000\u0000\u0000\u18fa\u0363\u0001\u0000\u0000\u0000\u18fb"+
57350 		"\u1907\u0005\u0144\u0000\u0000\u18fc\u18fd\u0005\u0146\u0000\u0000\u18fd"+
57351 		"\u1907\u0005\u0147\u0000\u0000\u18fe\u1907\u00053\u0000\u0000\u18ff\u1907"+
57352 		"\u0005\u00fc\u0000\u0000\u1900\u1901\u0005J\u0000\u0000\u1901\u1907\u0005"+
57353 		"\u0148\u0000\u0000\u1902\u1903\u00053\u0000\u0000\u1903\u1904\u0005s\u0000"+
57354 		"\u0000\u1904\u1905\u0005\u014c\u0000\u0000\u1905\u1907\u0005C\u0000\u0000"+
57355 		"\u1906\u18fb\u0001\u0000\u0000\u0000\u1906\u18fc\u0001\u0000\u0000\u0000"+
57356 		"\u1906\u18fe\u0001\u0000\u0000\u0000\u1906\u18ff\u0001\u0000\u0000\u0000"+
57357 		"\u1906\u1900\u0001\u0000\u0000\u0000\u1906\u1902\u0001\u0000\u0000\u0000"+
57358 		"\u1907\u0365\u0001\u0000\u0000\u0000\u1908\u1913\u0005\u0144\u0000\u0000"+
57359 		"\u1909\u190a\u0005\u0146\u0000\u0000\u190a\u1913\u0005\u0147\u0000\u0000"+
57360 		"\u190b\u1913\u00053\u0000\u0000\u190c\u1913\u0005\u00fc\u0000\u0000\u190d"+
57361 		"\u190e\u0005J\u0000\u0000\u190e\u1913\u0005\u0148\u0000\u0000\u190f\u1910"+
57362 		"\u00053\u0000\u0000\u1910\u1911\u0005s\u0000\u0000\u1911\u1913\u0005\u014a"+
57363 		"\u0000\u0000\u1912\u1908\u0001\u0000\u0000\u0000\u1912\u1909\u0001\u0000"+
57364 		"\u0000\u0000\u1912\u190b\u0001\u0000\u0000\u0000\u1912\u190c\u0001\u0000"+
57365 		"\u0000\u0000\u1912\u190d\u0001\u0000\u0000\u0000\u1912\u190f\u0001\u0000"+
57366 		"\u0000\u0000\u1913\u0367\u0001\u0000\u0000\u0000\u1914\u1926\u00053\u0000"+
57367 		"\u0000\u1915\u1926\u0005\u0141\u0000\u0000\u1916\u1918\u0005\u0144\u0000"+
57368 		"\u0000\u1917\u1919\u0005\u014d\u0000\u0000\u1918\u1917\u0001\u0000\u0000"+
57369 		"\u0000\u1918\u1919\u0001\u0000\u0000\u0000\u1919\u1926\u0001\u0000\u0000"+
57370 		"\u0000\u191a\u191b\u0005\u0146\u0000\u0000\u191b\u1926\u0005\u0147\u0000"+
57371 		"\u0000\u191c\u191e\u0005J\u0000\u0000\u191d\u191f\u0005s\u0000\u0000\u191e"+
57372 		"\u191d\u0001\u0000\u0000\u0000\u191e\u191f\u0001\u0000\u0000\u0000\u191f"+
57373 		"\u1920\u0001\u0000\u0000\u0000\u1920\u1926\u0005\u0148\u0000\u0000\u1921"+
57374 		"\u1922\u00053\u0000\u0000\u1922\u1923\u0005s\u0000\u0000\u1923\u1924\u0005"+
57375 		"\u0155\u0000\u0000\u1924\u1926\u0005v\u0000\u0000\u1925\u1914\u0001\u0000"+
57376 		"\u0000\u0000\u1925\u1915\u0001\u0000\u0000\u0000\u1925\u1916\u0001\u0000"+
57377 		"\u0000\u0000\u1925\u191a\u0001\u0000\u0000\u0000\u1925\u191c\u0001\u0000"+
57378 		"\u0000\u0000\u1925\u1921\u0001\u0000\u0000\u0000\u1926\u0369\u0001\u0000"+
57379 		"\u0000\u0000\u1927\u192a\u0003\u036c\u01b6\u0000\u1928\u192a\u0003\u036e"+
57380 		"\u01b7\u0000\u1929\u1927\u0001\u0000\u0000\u0000\u1929\u1928\u0001\u0000"+
57381 		"\u0000\u0000\u192a\u036b\u0001\u0000\u0000\u0000\u192b\u1937\u0005\u0144"+
57382 		"\u0000\u0000\u192c\u192d\u0005\u0146\u0000\u0000\u192d\u1937\u0005\u0147"+
57383 		"\u0000\u0000\u192e\u1937\u00053\u0000\u0000\u192f\u1937\u0005\u00fc\u0000"+
57384 		"\u0000\u1930\u1931\u0005J\u0000\u0000\u1931\u1937\u0005\u0148\u0000\u0000"+
57385 		"\u1932\u1933\u00053\u0000\u0000\u1933\u1934\u0005s\u0000\u0000\u1934\u1935"+
57386 		"\u0005\u0175\u0000\u0000\u1935\u1937\u0005\u0143\u0000\u0000\u1936\u192b"+
57387 		"\u0001\u0000\u0000\u0000\u1936\u192c\u0001\u0000\u0000\u0000\u1936\u192e"+
57388 		"\u0001\u0000\u0000\u0000\u1936\u192f\u0001\u0000\u0000\u0000\u1936\u1930"+
57389 		"\u0001\u0000\u0000\u0000\u1936\u1932\u0001\u0000\u0000\u0000\u1937\u036d"+
57390 		"\u0001\u0000\u0000\u0000\u1938\u1944\u00053\u0000\u0000\u1939\u1944\u0005"+
57391 		"\u0144\u0000\u0000\u193a\u1944\u0005\u00fc\u0000\u0000\u193b\u193c\u0005"+
57392 		"\u0146\u0000\u0000\u193c\u1944\u0005\u0147\u0000\u0000\u193d\u193e\u0005"+
57393 		"J\u0000\u0000\u193e\u1944\u0005\u0148\u0000\u0000\u193f\u1940\u00053\u0000"+
57394 		"\u0000\u1940\u1941\u0005s\u0000\u0000\u1941\u1942\u0005\u0175\u0000\u0000"+
57395 		"\u1942\u1944\u0005\u0143\u0000\u0000\u1943\u1938\u0001\u0000\u0000\u0000"+
57396 		"\u1943\u1939\u0001\u0000\u0000\u0000\u1943\u193a\u0001\u0000\u0000\u0000"+
57397 		"\u1943\u193b\u0001\u0000\u0000\u0000\u1943\u193d\u0001\u0000\u0000\u0000"+
57398 		"\u1943\u193f\u0001\u0000\u0000\u0000\u1944\u036f\u0001\u0000\u0000\u0000"+
57399 		"\u1945\u194d\u0005\u0144\u0000\u0000\u1946\u194d\u0005\u013e\u0000\u0000"+
57400 		"\u1947\u194d\u0005\u00fc\u0000\u0000\u1948\u1949\u0005\u0146\u0000\u0000"+
57401 		"\u1949\u194d\u0005\u0147\u0000\u0000\u194a\u194b\u0005J\u0000\u0000\u194b"+
57402 		"\u194d\u0005\u0148\u0000\u0000\u194c\u1945\u0001\u0000\u0000\u0000\u194c"+
57403 		"\u1946\u0001\u0000\u0000\u0000\u194c\u1947\u0001\u0000\u0000\u0000\u194c"+
57404 		"\u1948\u0001\u0000\u0000\u0000\u194c\u194a\u0001\u0000\u0000\u0000\u194d"+
57405 		"\u0371\u0001\u0000\u0000\u0000\u194e\u1957\u00053\u0000\u0000\u194f\u1957"+
57406 		"\u0005\u0144\u0000\u0000\u1950\u1957\u0005\u013e\u0000\u0000\u1951\u1957"+
57407 		"\u0005\u00fc\u0000\u0000\u1952\u1953\u0005\u0146\u0000\u0000\u1953\u1957"+
57408 		"\u0005\u0147\u0000\u0000\u1954\u1955\u0005J\u0000\u0000\u1955\u1957\u0005"+
57409 		"\u0148\u0000\u0000\u1956\u194e\u0001\u0000\u0000\u0000\u1956\u194f\u0001"+
57410 		"\u0000\u0000\u0000\u1956\u1950\u0001\u0000\u0000\u0000\u1956\u1951\u0001"+
57411 		"\u0000\u0000\u0000\u1956\u1952\u0001\u0000\u0000\u0000\u1956\u1954\u0001"+
57412 		"\u0000\u0000\u0000\u1957\u0373\u0001\u0000\u0000\u0000\u1958\u1959\u0007"+
57413 		"[\u0000\u0000\u1959\u0375\u0001\u0000\u0000\u0000\u195a\u195b\u0005\u02c8"+
57414 		"\u0000\u0000\u195b\u195c\u0005\u000e\u0000\u0000\u195c\u195d\u0005\u000e"+
57415 		"\u0000\u0000\u195d\u0377\u0001\u0000\u0000\u0000\u195e\u1987\u0005\u014a"+
57416 		"\u0000\u0000\u195f\u1960\u0005\u014c\u0000\u0000\u1960\u1987\u0005C\u0000"+
57417 		"\u0000\u1961\u1962\u0005\u0155\u0000\u0000\u1962\u1987\u0005v\u0000\u0000"+
57418 		"\u1963\u1987\u0005\u016c\u0000\u0000\u1964\u1987\u0005\u00fd\u0000\u0000"+
57419 		"\u1965\u1987\u0005\u00fe\u0000\u0000\u1966\u1967\u0005\u0149\u0000\u0000"+
57420 		"\u1967\u1987\u0005\u00fe\u0000\u0000\u1968\u1969\u0005\u00cc\u0000\u0000"+
57421 		"\u1969\u196a\u0005\u0168\u0000\u0000\u196a\u1987\u0005\u0156\u0000\u0000"+
57422 		"\u196b\u1987\u0005\u0157\u0000\u0000\u196c\u196d\u0005\u0175\u0000\u0000"+
57423 		"\u196d\u1987\u0007\\\u0000\u0000\u196e\u1987\u0005\u0128\u0000\u0000\u196f"+
57424 		"\u1987\u00056\u0000\u0000\u1970\u1971\u0005\u02a2\u0000\u0000\u1971\u1972"+
57425 		"\u0005\u02a3\u0000\u0000\u1972\u1987\u0005\u02a4\u0000\u0000\u1973\u1987"+
57426 		"\u0005\u0122\u0000\u0000\u1974\u1975\u0005\u014d\u0000\u0000\u1975\u1987"+
57427 		"\u0005\u00fe\u0000\u0000\u1976\u1987\u0005\u016d\u0000\u0000\u1977\u1978"+
57428 		"\u0005\u0178\u0000\u0000\u1978\u1987\u0005\u00b0\u0000\u0000\u1979\u197a"+
57429 		"\u0005\u0179\u0000\u0000\u197a\u197b\u0005\u016b\u0000\u0000\u197b\u1987"+
57430 		"\u0005\u017a\u0000\u0000\u197c\u1987\u0005\u017b\u0000\u0000\u197d\u1987"+
57431 		"\u0005\u016b\u0000\u0000\u197e\u197f\u0005\u014b\u0000\u0000\u197f\u1987"+
57432 		"\u0005C\u0000\u0000\u1980\u1987\u0005.\u0000\u0000\u1981\u1987\u0005\u013e"+
57433 		"\u0000\u0000\u1982\u1987\u0005\u00b0\u0000\u0000\u1983\u1984\u0005\u015d"+
57434 		"\u0000\u0000\u1984\u1985\u00056\u0000\u0000\u1985\u1987\u0005\u0182\u0000"+
57435 		"\u0000\u1986\u195e\u0001\u0000\u0000\u0000\u1986\u195f\u0001\u0000\u0000"+
57436 		"\u0000\u1986\u1961\u0001\u0000\u0000\u0000\u1986\u1963\u0001\u0000\u0000"+
57437 		"\u0000\u1986\u1964\u0001\u0000\u0000\u0000\u1986\u1965\u0001\u0000\u0000"+
57438 		"\u0000\u1986\u1966\u0001\u0000\u0000\u0000\u1986\u1968\u0001\u0000\u0000"+
57439 		"\u0000\u1986\u196b\u0001\u0000\u0000\u0000\u1986\u196c\u0001\u0000\u0000"+
57440 		"\u0000\u1986\u196e\u0001\u0000\u0000\u0000\u1986\u196f\u0001\u0000\u0000"+
57441 		"\u0000\u1986\u1970\u0001\u0000\u0000\u0000\u1986\u1973\u0001\u0000\u0000"+
57442 		"\u0000\u1986\u1974\u0001\u0000\u0000\u0000\u1986\u1976\u0001\u0000\u0000"+
57443 		"\u0000\u1986\u1977\u0001\u0000\u0000\u0000\u1986\u1979\u0001\u0000\u0000"+
57444 		"\u0000\u1986\u197c\u0001\u0000\u0000\u0000\u1986\u197d\u0001\u0000\u0000"+
57445 		"\u0000\u1986\u197e\u0001\u0000\u0000\u0000\u1986\u1980\u0001\u0000\u0000"+
57446 		"\u0000\u1986\u1981\u0001\u0000\u0000\u0000\u1986\u1982\u0001\u0000\u0000"+
57447 		"\u0000\u1986\u1983\u0001\u0000\u0000\u0000\u1987\u0379\u0001\u0000\u0000"+
57448 		"\u0000\u1988\u1989\u0007]\u0000\u0000\u1989\u037b\u0001\u0000\u0000\u0000"+
57449 		"\u198a\u198b\u0003\u00d6k\u0000\u198b\u037d\u0001\u0000\u0000\u0000\u198c"+
57450 		"\u1992\u0005\u0298\u0000\u0000\u198d\u1990\u0003\u001c\u000e\u0000\u198e"+
57451 		"\u198f\u0005M\u0000\u0000\u198f\u1991\u0005\u0299\u0000\u0000\u1990\u198e"+
57452 		"\u0001\u0000\u0000\u0000\u1990\u1991\u0001\u0000\u0000\u0000\u1991\u1993"+
57453 		"\u0001\u0000\u0000\u0000\u1992\u198d\u0001\u0000\u0000\u0000\u1992\u1993"+
57454 		"\u0001\u0000\u0000\u0000\u1993\u037f\u0001\u0000\u0000\u0000\u1994\u1995"+
57455 		"\u00052\u0000\u0000\u1995\u199e\u0005\u00fd\u0000\u0000\u1996\u199f\u0003"+
57456 		"\u0382\u01c1\u0000\u1997\u199f\u0003\u0384\u01c2\u0000\u1998\u199f\u0003"+
57457 		"\u0386\u01c3\u0000\u1999\u199f\u0003\u0388\u01c4\u0000\u199a\u199f\u0003"+
57458 		"\u038e\u01c7\u0000\u199b\u199f\u0003\u0390\u01c8\u0000\u199c\u199f\u0003"+
57459 		"\u0392\u01c9\u0000\u199d\u199f\u0003\u0398\u01cc\u0000\u199e\u1996\u0001"+
57460 		"\u0000\u0000\u0000\u199e\u1997\u0001\u0000\u0000\u0000\u199e\u1998\u0001"+
57461 		"\u0000\u0000\u0000\u199e\u1999\u0001\u0000\u0000\u0000\u199e\u199a\u0001"+
57462 		"\u0000\u0000\u0000\u199e\u199b\u0001\u0000\u0000\u0000\u199e\u199c\u0001"+
57463 		"\u0000\u0000\u0000\u199e\u199d\u0001\u0000\u0000\u0000\u199e\u199f\u0001"+
57464 		"\u0000\u0000\u0000\u199f\u0381\u0001\u0000\u0000\u0000\u19a0\u19a4\u0003"+
57465 		"\u0398\u01cc\u0000\u19a1\u19a2\u0007^\u0000\u0000\u19a2\u19a3\u0005\u0122"+
57466 		"\u0000\u0000\u19a3\u19a5\u0003*\u0015\u0000\u19a4\u19a1\u0001\u0000\u0000"+
57467 		"\u0000\u19a4\u19a5\u0001\u0000\u0000\u0000\u19a5\u19af\u0001\u0000\u0000"+
57468 		"\u0000\u19a6\u19a7\u0005M\u0000\u0000\u19a7\u19ac\u0003\u038c\u01c6\u0000"+
57469 		"\u19a8\u19a9\u0005%\u0000\u0000\u19a9\u19ab\u0003\u038c\u01c6\u0000\u19aa"+
57470 		"\u19a8\u0001\u0000\u0000\u0000\u19ab\u19ae\u0001\u0000\u0000\u0000\u19ac"+
57471 		"\u19aa\u0001\u0000\u0000\u0000\u19ac\u19ad\u0001\u0000\u0000\u0000\u19ad"+
57472 		"\u19b0\u0001\u0000\u0000\u0000\u19ae\u19ac\u0001\u0000\u0000\u0000\u19af"+
57473 		"\u19a6\u0001\u0000\u0000\u0000\u19af\u19b0\u0001\u0000\u0000\u0000\u19b0"+
57474 		"\u0383\u0001\u0000\u0000\u0000\u19b1\u19bb\u0003\u0394\u01ca\u0000\u19b2"+
57475 		"\u19b3\u0005M\u0000\u0000\u19b3\u19b8\u0003\u038a\u01c5\u0000\u19b4\u19b5"+
57476 		"\u0005%\u0000\u0000\u19b5\u19b7\u0003\u038a\u01c5\u0000\u19b6\u19b4\u0001"+
57477 		"\u0000\u0000\u0000\u19b7\u19ba\u0001\u0000\u0000\u0000\u19b8\u19b6\u0001"+
57478 		"\u0000\u0000\u0000\u19b8\u19b9\u0001\u0000\u0000\u0000\u19b9\u19bc\u0001"+
57479 		"\u0000\u0000\u0000\u19ba\u19b8\u0001\u0000\u0000\u0000\u19bb\u19b2\u0001"+
57480 		"\u0000\u0000\u0000\u19bb\u19bc\u0001\u0000\u0000\u0000\u19bc\u19d3\u0001"+
57481 		"\u0000\u0000\u0000\u19bd\u19be\u0003\u0398\u01cc\u0000\u19be\u19bf\u0005"+
57482 		"M\u0000\u0000\u19bf\u19c0\u0005\u00d5\u0000\u0000\u19c0\u19c1\u0005\u0018"+
57483 		"\u0000\u0000\u19c1\u19cb\u0003\u001c\u000e\u0000\u19c2\u19c3\u0005%\u0000"+
57484 		"\u0000\u19c3\u19c8\u0003\u038a\u01c5\u0000\u19c4\u19c5\u0005%\u0000\u0000"+
57485 		"\u19c5\u19c7\u0003\u038a\u01c5\u0000\u19c6\u19c4\u0001\u0000\u0000\u0000"+
57486 		"\u19c7\u19ca\u0001\u0000\u0000\u0000\u19c8\u19c6\u0001\u0000\u0000\u0000"+
57487 		"\u19c8\u19c9\u0001\u0000\u0000\u0000\u19c9\u19cc\u0001\u0000\u0000\u0000"+
57488 		"\u19ca\u19c8\u0001\u0000\u0000\u0000\u19cb\u19c2\u0001\u0000\u0000\u0000"+
57489 		"\u19cb\u19cc\u0001\u0000\u0000\u0000\u19cc\u19d3\u0001\u0000\u0000\u0000"+
57490 		"\u19cd\u19ce\u0003\u0396\u01cb\u0000\u19ce\u19cf\u0005U\u0000\u0000\u19cf"+
57491 		"\u19d0\u0005\u0161\u0000\u0000\u19d0\u19d1\u0005\u029d\u0000\u0000\u19d1"+
57492 		"\u19d3\u0001\u0000\u0000\u0000\u19d2\u19b1\u0001\u0000\u0000\u0000\u19d2"+
57493 		"\u19bd\u0001\u0000\u0000\u0000\u19d2\u19cd\u0001\u0000\u0000\u0000\u19d3"+
57494 		"\u0385\u0001\u0000\u0000\u0000\u19d4\u19d8\u0003\u0394\u01ca\u0000\u19d5"+
57495 		"\u19d6\u0007^\u0000\u0000\u19d6\u19d7\u0005\u0122\u0000\u0000\u19d7\u19d9"+
57496 		"\u0003\u0394\u01ca\u0000\u19d8\u19d5\u0001\u0000\u0000\u0000\u19d8\u19d9"+
57497 		"\u0001\u0000\u0000\u0000\u19d9\u19e0\u0001\u0000\u0000\u0000\u19da\u19db"+
57498 		"\u0003\u0398\u01cc\u0000\u19db\u19dc\u0007^\u0000\u0000\u19dc\u19dd\u0005"+
57499 		"\u0122\u0000\u0000\u19dd\u19de\u0003\u0394\u01ca\u0000\u19de\u19e0\u0001"+
57500 		"\u0000\u0000\u0000\u19df\u19d4\u0001\u0000\u0000\u0000\u19df\u19da\u0001"+
57501 		"\u0000\u0000\u0000\u19e0\u19ea\u0001\u0000\u0000\u0000\u19e1\u19e2\u0005"+
57502 		"M\u0000\u0000\u19e2\u19e7\u0003\u038c\u01c6\u0000\u19e3\u19e4\u0005%\u0000"+
57503 		"\u0000\u19e4\u19e6\u0003\u038c\u01c6\u0000\u19e5\u19e3\u0001\u0000\u0000"+
57504 		"\u0000\u19e6\u19e9\u0001\u0000\u0000\u0000\u19e7\u19e5\u0001\u0000\u0000"+
57505 		"\u0000\u19e7\u19e8\u0001\u0000\u0000\u0000\u19e8\u19eb\u0001\u0000\u0000"+
57506 		"\u0000\u19e9\u19e7\u0001\u0000\u0000\u0000\u19ea\u19e1\u0001\u0000\u0000"+
57507 		"\u0000\u19ea\u19eb\u0001\u0000\u0000\u0000\u19eb\u0387\u0001\u0000\u0000"+
57508 		"\u0000\u19ec\u1a01\u0003\u0398\u01cc\u0000\u19ed\u19ee\u0005\u00d6\u0000"+
57509 		"\u0000\u19ee\u19f8\u0005\u0122\u0000\u0000\u19ef\u19f0\u0005M\u0000\u0000"+
57510 		"\u19f0\u19f5\u0003\u038c\u01c6\u0000\u19f1\u19f2\u0005%\u0000\u0000\u19f2"+
57511 		"\u19f4\u0003\u038c\u01c6\u0000\u19f3\u19f1\u0001\u0000\u0000\u0000\u19f4"+
57512 		"\u19f7\u0001\u0000\u0000\u0000\u19f5\u19f3\u0001\u0000\u0000\u0000\u19f5"+
57513 		"\u19f6\u0001\u0000\u0000\u0000\u19f6\u19f9\u0001\u0000\u0000\u0000\u19f7"+
57514 		"\u19f5\u0001\u0000\u0000\u0000\u19f8\u19ef\u0001\u0000\u0000\u0000\u19f8"+
57515 		"\u19f9\u0001\u0000\u0000\u0000\u19f9\u1a02\u0001\u0000\u0000\u0000\u19fa"+
57516 		"\u19fb\u0007^\u0000\u0000\u19fb\u19fc\u0005\u016c\u0000\u0000\u19fc\u1a02"+
57517 		"\u0003*\u0015\u0000\u19fd\u19fe\u0007^\u0000\u0000\u19fe\u19ff\u0005\u014c"+
57518 		"\u0000\u0000\u19ff\u1a00\u0005C\u0000\u0000\u1a00\u1a02\u0003*\u0015\u0000"+
57519 		"\u1a01\u19ed\u0001\u0000\u0000\u0000\u1a01\u19fa\u0001\u0000\u0000\u0000"+
57520 		"\u1a01\u19fd\u0001\u0000\u0000\u0000\u1a02\u0389\u0001\u0000\u0000\u0000"+
57521 		"\u1a03\u1a04\u0005\u029a\u0000\u0000\u1a04\u1a05\u0005\u0018\u0000\u0000"+
57522 		"\u1a05\u1a15\u00034\u001a\u0000\u1a06\u1a07\u0005\u028a\u0000\u0000\u1a07"+
57523 		"\u1a0a\u0005\u0018\u0000\u0000\u1a08\u1a0b\u0005\u0127\u0000\u0000\u1a09"+
57524 		"\u1a0b\u0003*\u0015\u0000\u1a0a\u1a08\u0001\u0000\u0000\u0000\u1a0a\u1a09"+
57525 		"\u0001\u0000\u0000\u0000\u1a0b\u1a15\u0001\u0000\u0000\u0000\u1a0c\u1a0d"+
57526 		"\u0005\u029e\u0000\u0000\u1a0d\u1a0e\u0005\u0018\u0000\u0000\u1a0e\u1a15"+
57527 		"\u0003\u03b2\u01d9\u0000\u1a0f\u1a10\u0005\u029b\u0000\u0000\u1a10\u1a12"+
57528 		"\u0005\u0018\u0000\u0000\u1a11\u1a13\u0007\u0000\u0000\u0000\u1a12\u1a11"+
57529 		"\u0001\u0000\u0000\u0000\u1a12\u1a13\u0001\u0000\u0000\u0000\u1a13\u1a15"+
57530 		"\u0001\u0000\u0000\u0000\u1a14\u1a03\u0001\u0000\u0000\u0000\u1a14\u1a06"+
57531 		"\u0001\u0000\u0000\u0000\u1a14\u1a0c\u0001\u0000\u0000\u0000\u1a14\u1a0f"+
57532 		"\u0001\u0000\u0000\u0000\u1a15\u038b\u0001\u0000\u0000\u0000\u1a16\u1a17"+
57533 		"\u0005\u029a\u0000\u0000\u1a17\u1a18\u0005\u0018\u0000\u0000\u1a18\u1a25"+
57534 		"\u00034\u001a\u0000\u1a19\u1a1a\u0005\u028a\u0000\u0000\u1a1a\u1a1d\u0005"+
57535 		"\u0018\u0000\u0000\u1a1b\u1a1e\u0005\u0127\u0000\u0000\u1a1c\u1a1e\u0003"+
57536 		"*\u0015\u0000\u1a1d\u1a1b\u0001\u0000\u0000\u0000\u1a1d\u1a1c\u0001\u0000"+
57537 		"\u0000\u0000\u1a1e\u1a25\u0001\u0000\u0000\u0000\u1a1f\u1a20\u0005\u029b"+
57538 		"\u0000\u0000\u1a20\u1a22\u0005\u0018\u0000\u0000\u1a21\u1a23\u0007\u0000"+
57539 		"\u0000\u0000\u1a22\u1a21\u0001\u0000\u0000\u0000\u1a22\u1a23\u0001\u0000"+
57540 		"\u0000\u0000\u1a23\u1a25\u0001\u0000\u0000\u0000\u1a24\u1a16\u0001\u0000"+
57541 		"\u0000\u0000\u1a24\u1a19\u0001\u0000\u0000\u0000\u1a24\u1a1f\u0001\u0000"+
57542 		"\u0000\u0000\u1a25\u038d\u0001\u0000\u0000\u0000\u1a26\u1a2a\u0003\u0398"+
57543 		"\u01cc\u0000\u1a27\u1a28\u0007^\u0000\u0000\u1a28\u1a29\u0005\u0122\u0000"+
57544 		"\u0000\u1a29\u1a2b\u0003*\u0015\u0000\u1a2a\u1a27\u0001\u0000\u0000\u0000"+
57545 		"\u1a2a\u1a2b\u0001\u0000\u0000\u0000\u1a2b\u1a3b\u0001\u0000\u0000\u0000"+
57546 		"\u1a2c\u1a2d\u0005U\u0000\u0000\u1a2d\u1a2e\u0005\u0161\u0000\u0000\u1a2e"+
57547 		"\u1a38\u0005\u029d\u0000\u0000\u1a2f\u1a30\u0005M\u0000\u0000\u1a30\u1a35"+
57548 		"\u0003\u038c\u01c6\u0000\u1a31\u1a32\u0005%\u0000\u0000\u1a32\u1a34\u0003"+
57549 		"\u038c\u01c6\u0000\u1a33\u1a31\u0001\u0000\u0000\u0000\u1a34\u1a37\u0001"+
57550 		"\u0000\u0000\u0000\u1a35\u1a33\u0001\u0000\u0000\u0000\u1a35\u1a36\u0001"+
57551 		"\u0000\u0000\u0000\u1a36\u1a39\u0001\u0000\u0000\u0000\u1a37\u1a35\u0001"+
57552 		"\u0000\u0000\u0000\u1a38\u1a2f\u0001\u0000\u0000\u0000\u1a38\u1a39\u0001"+
57553 		"\u0000\u0000\u0000\u1a39\u1a3b\u0001\u0000\u0000\u0000\u1a3a\u1a26\u0001"+
57554 		"\u0000\u0000\u0000\u1a3a\u1a2c\u0001\u0000\u0000\u0000\u1a3b\u038f\u0001"+
57555 		"\u0000\u0000\u0000\u1a3c\u1a42\u0003\u0398\u01cc\u0000\u1a3d\u1a3e\u0007"+
57556 		"^\u0000\u0000\u1a3e\u1a3f\u0005\u0122\u0000\u0000\u1a3f\u1a43\u0003*\u0015"+
57557 		"\u0000\u1a40\u1a41\u0005\u00d6\u0000\u0000\u1a41\u1a43\u0005\u0122\u0000"+
57558 		"\u0000\u1a42\u1a3d\u0001\u0000\u0000\u0000\u1a42\u1a40\u0001\u0000\u0000"+
57559 		"\u0000\u1a42\u1a43\u0001\u0000\u0000\u0000\u1a43\u1a48\u0001\u0000\u0000"+
57560 		"\u0000\u1a44\u1a45\u0005M\u0000\u0000\u1a45\u1a46\u0005\u029a\u0000\u0000"+
57561 		"\u1a46\u1a47\u0005\u0018\u0000\u0000\u1a47\u1a49\u00034\u001a\u0000\u1a48"+
57562 		"\u1a44\u0001\u0000\u0000\u0000\u1a48\u1a49\u0001\u0000\u0000\u0000\u1a49"+
57563 		"\u0391\u0001\u0000\u0000\u0000\u1a4a\u1a4b\u0003\u0396\u01cb\u0000\u1a4b"+
57564 		"\u1a4c\u0005U\u0000\u0000\u1a4c\u1a4d\u0005\u0161\u0000\u0000\u1a4d\u1a52"+
57565 		"\u0005\u029d\u0000\u0000\u1a4e\u1a4f\u0005M\u0000\u0000\u1a4f\u1a50\u0005"+
57566 		"\u029a\u0000\u0000\u1a50\u1a51\u0005\u0018\u0000\u0000\u1a51\u1a53\u0003"+
57567 		"4\u001a\u0000\u1a52\u1a4e\u0001\u0000\u0000\u0000\u1a52\u1a53\u0001\u0000"+
57568 		"\u0000\u0000\u1a53\u0393\u0001\u0000\u0000\u0000\u1a54\u1a55\u0003\u0398"+
57569 		"\u01cc\u0000\u1a55\u0395\u0001\u0000\u0000\u0000\u1a56\u1a57\u0003\u0398"+
57570 		"\u01cc\u0000\u1a57\u0397\u0001\u0000\u0000\u0000\u1a58\u1a59\u0003\u039a"+
57571 		"\u01cd\u0000\u1a59\u0399\u0001\u0000\u0000\u0000\u1a5a\u1a5d\u0003*\u0015"+
57572 		"\u0000\u1a5b\u1a5c\u0005\u0014\u0000\u0000\u1a5c\u1a5e\u0003*\u0015\u0000"+
57573 		"\u1a5d\u1a5b\u0001\u0000\u0000\u0000\u1a5d\u1a5e\u0001\u0000\u0000\u0000"+
57574 		"\u1a5e\u039b\u0001\u0000\u0000\u0000\u1a5f\u1a60\u00054\u0000\u0000\u1a60"+
57575 		"\u1a62\u0005\u00fd\u0000\u0000\u1a61\u1a63\u0003\u00e8t\u0000\u1a62\u1a61"+
57576 		"\u0001\u0000\u0000\u0000\u1a62\u1a63\u0001\u0000\u0000\u0000\u1a63\u1a64"+
57577 		"\u0001\u0000\u0000\u0000\u1a64\u1a65\u0003\u0398\u01cc\u0000\u1a65\u039d"+
57578 		"\u0001\u0000\u0000\u0000\u1a66\u1a67\u00053\u0000\u0000\u1a67\u1a68\u0005"+
57579 		"\u00fd\u0000\u0000\u1a68\u1a75\u0003\u0398\u01cc\u0000\u1a69\u1a6a\u0005"+
57580 		"M\u0000\u0000\u1a6a\u1a6f\u0003\u03a0\u01d0\u0000\u1a6b\u1a6c\u0005%\u0000"+
57581 		"\u0000\u1a6c\u1a6e\u0003\u03a0\u01d0\u0000\u1a6d\u1a6b\u0001\u0000\u0000"+
57582 		"\u0000\u1a6e\u1a71\u0001\u0000\u0000\u0000\u1a6f\u1a6d\u0001\u0000\u0000"+
57583 		"\u0000\u1a6f\u1a70\u0001\u0000\u0000\u0000\u1a70\u1a76\u0001\u0000\u0000"+
57584 		"\u0000\u1a71\u1a6f\u0001\u0000\u0000\u0000\u1a72\u1a73\u0005U\u0000\u0000"+
57585 		"\u1a73\u1a74\u0005\u0161\u0000\u0000\u1a74\u1a76\u0005\u029d\u0000\u0000"+
57586 		"\u1a75\u1a69\u0001\u0000\u0000\u0000\u1a75\u1a72\u0001\u0000\u0000\u0000"+
57587 		"\u1a76\u039f\u0001\u0000\u0000\u0000\u1a77\u1a78\u0005\u00aa\u0000\u0000"+
57588 		"\u1a78\u1a79\u0005\u0018\u0000\u0000\u1a79\u1a97\u0003\u0398\u01cc\u0000"+
57589 		"\u1a7a\u1a7b\u0005\u029a\u0000\u0000\u1a7b\u1a7e\u0005\u0018\u0000\u0000"+
57590 		"\u1a7c\u1a7f\u00034\u001a\u0000\u1a7d\u1a7f\u0005l\u0000\u0000\u1a7e\u1a7c"+
57591 		"\u0001\u0000\u0000\u0000\u1a7e\u1a7d\u0001\u0000\u0000\u0000\u1a7f\u1a97"+
57592 		"\u0001\u0000\u0000\u0000\u1a80\u1a81\u0005\u0122\u0000\u0000\u1a81\u1a82"+
57593 		"\u0005\u0018\u0000\u0000\u1a82\u1a97\u0003*\u0015\u0000\u1a83\u1a84\u0005"+
57594 		"\u00d5\u0000\u0000\u1a84\u1a85\u0005\u0018\u0000\u0000\u1a85\u1a89\u0003"+
57595 		"\u001c\u000e\u0000\u1a86\u1a87\u0005\u029c\u0000\u0000\u1a87\u1a88\u0005"+
57596 		"\u0018\u0000\u0000\u1a88\u1a8a\u0003\u001c\u000e\u0000\u1a89\u1a86\u0001"+
57597 		"\u0000\u0000\u0000\u1a89\u1a8a\u0001\u0000\u0000\u0000\u1a8a\u1a97\u0001"+
57598 		"\u0000\u0000\u0000\u1a8b\u1a8c\u0005\u028a\u0000\u0000\u1a8c\u1a8f\u0005"+
57599 		"\u0018\u0000\u0000\u1a8d\u1a90\u0005\u0127\u0000\u0000\u1a8e\u1a90\u0003"+
57600 		"*\u0015\u0000\u1a8f\u1a8d\u0001\u0000\u0000\u0000\u1a8f\u1a8e\u0001\u0000"+
57601 		"\u0000\u0000\u1a90\u1a97\u0001\u0000\u0000\u0000\u1a91\u1a92\u0005\u029b"+
57602 		"\u0000\u0000\u1a92\u1a94\u0005\u0018\u0000\u0000\u1a93\u1a95\u0007\u0000"+
57603 		"\u0000\u0000\u1a94\u1a93\u0001\u0000\u0000\u0000\u1a94\u1a95\u0001\u0000"+
57604 		"\u0000\u0000\u1a95\u1a97\u0001\u0000\u0000\u0000\u1a96\u1a77\u0001\u0000"+
57605 		"\u0000\u0000\u1a96\u1a7a\u0001\u0000\u0000\u0000\u1a96\u1a80\u0001\u0000"+
57606 		"\u0000\u0000\u1a96\u1a83\u0001\u0000\u0000\u0000\u1a96\u1a8b\u0001\u0000"+
57607 		"\u0000\u0000\u1a96\u1a91\u0001\u0000\u0000\u0000\u1a97\u03a1\u0001\u0000"+
57608 		"\u0000\u0000\u1a98\u1a99\u00052\u0000\u0000\u1a99\u1a9a\u0005\u00fe\u0000"+
57609 		"\u0000\u1a9a\u1a9d\u0003N\'\u0000\u1a9b\u1a9c\u0005\u0293\u0000\u0000"+
57610 		"\u1a9c\u1a9e\u0003N\'\u0000\u1a9d\u1a9b\u0001\u0000\u0000\u0000\u1a9d"+
57611 		"\u1a9e\u0001\u0000\u0000\u0000\u1a9e\u03a3\u0001\u0000\u0000\u0000\u1a9f"+
57612 		"\u1aa0\u00054\u0000\u0000\u1aa0\u1aa2\u0005\u00fe\u0000\u0000\u1aa1\u1aa3"+
57613 		"\u0003\u00e8t\u0000\u1aa2\u1aa1\u0001\u0000\u0000\u0000\u1aa2\u1aa3\u0001"+
57614 		"\u0000\u0000\u0000\u1aa3\u1aa4\u0001\u0000\u0000\u0000\u1aa4\u1aa5\u0003"+
57615 		"N\'\u0000\u1aa5\u03a5\u0001\u0000\u0000\u0000\u1aa6\u1aa7\u00053\u0000"+
57616 		"\u0000\u1aa7\u1aa8\u0005\u00fe\u0000\u0000\u1aa8\u1ab3\u0003N\'\u0000"+
57617 		"\u1aa9\u1aaa\u00059\u0000\u0000\u1aaa\u1aab\u0005\u02a6\u0000\u0000\u1aab"+
57618 		"\u1ab4\u0003\u032a\u0195\u0000\u1aac\u1aad\u00054\u0000\u0000\u1aad\u1aae"+
57619 		"\u0005\u02a6\u0000\u0000\u1aae\u1ab4\u0003\u032a\u0195\u0000\u1aaf\u1ab0"+
57620 		"\u0005M\u0000\u0000\u1ab0\u1ab1\u0005\u00aa\u0000\u0000\u1ab1\u1ab2\u0005"+
57621 		"\u0018\u0000\u0000\u1ab2\u1ab4\u0003N\'\u0000\u1ab3\u1aa9\u0001\u0000"+
57622 		"\u0000\u0000\u1ab3\u1aac\u0001\u0000\u0000\u0000\u1ab3\u1aaf\u0001\u0000"+
57623 		"\u0000\u0000\u1ab4\u03a7\u0001\u0000\u0000\u0000\u1ab5\u1ab6\u00052\u0000"+
57624 		"\u0000\u1ab6\u1ab7\u0005\u0122\u0000\u0000\u1ab7\u1abd\u0003\u039a\u01cd"+
57625 		"\u0000\u1ab8\u1abe\u0003\u03aa\u01d5\u0000\u1ab9\u1abe\u0003\u03b8\u01dc"+
57626 		"\u0000\u1aba\u1abe\u0003\u03bc\u01de\u0000\u1abb\u1abe\u0003\u03c0\u01e0"+
57627 		"\u0000\u1abc\u1abe\u0003\u03c4\u01e2\u0000\u1abd\u1ab8\u0001\u0000\u0000"+
57628 		"\u0000\u1abd\u1ab9\u0001\u0000\u0000\u0000\u1abd\u1aba\u0001\u0000\u0000"+
57629 		"\u0000\u1abd\u1abb\u0001\u0000\u0000\u0000\u1abd\u1abc\u0001\u0000\u0000"+
57630 		"\u0000\u1abe\u03a9\u0001\u0000\u0000\u0000\u1abf\u1ac0\u0005M\u0000\u0000"+
57631 		"\u1ac0\u1ac4\u0003\u03ac\u01d6\u0000\u1ac1\u1ac2\u0005U\u0000\u0000\u1ac2"+
57632 		"\u1ac4\u0003\u03b4\u01da\u0000\u1ac3\u1abf\u0001\u0000\u0000\u0000\u1ac3"+
57633 		"\u1ac1\u0001\u0000\u0000\u0000\u1ac4\u03ab\u0001\u0000\u0000\u0000\u1ac5"+
57634 		"\u1ac6\u0005\u00d5\u0000\u0000\u1ac6\u1acb\u0005\u0018\u0000\u0000\u1ac7"+
57635 		"\u1acc\u0003\u001c\u000e\u0000\u1ac8\u1ac9\u0003\u03b0\u01d8\u0000\u1ac9"+
57636 		"\u1aca\u0005\u02a7\u0000\u0000\u1aca\u1acc\u0001\u0000\u0000\u0000\u1acb"+
57637 		"\u1ac7\u0001\u0000\u0000\u0000\u1acb\u1ac8\u0001\u0000\u0000\u0000\u1acc"+
57638 		"\u1ace\u0001\u0000\u0000\u0000\u1acd\u1acf\u0005\u02a8\u0000\u0000\u1ace"+
57639 		"\u1acd\u0001\u0000\u0000\u0000\u1ace\u1acf\u0001\u0000\u0000\u0000\u1acf"+
57640 		"\u1ad9\u0001\u0000\u0000\u0000\u1ad0\u1ad1\u0005%\u0000\u0000\u1ad1\u1ad6"+
57641 		"\u0003\u03ae\u01d7\u0000\u1ad2\u1ad3\u0005%\u0000\u0000\u1ad3\u1ad5\u0003"+
57642 		"\u03ae\u01d7\u0000\u1ad4\u1ad2\u0001\u0000\u0000\u0000\u1ad5\u1ad8\u0001"+
57643 		"\u0000\u0000\u0000\u1ad6\u1ad4\u0001\u0000\u0000\u0000\u1ad6\u1ad7\u0001"+
57644 		"\u0000\u0000\u0000\u1ad7\u1ada\u0001\u0000\u0000\u0000\u1ad8\u1ad6\u0001"+
57645 		"\u0000\u0000\u0000\u1ad9\u1ad0\u0001\u0000\u0000\u0000\u1ad9\u1ada\u0001"+
57646 		"\u0000\u0000\u0000\u1ada\u03ad\u0001\u0000\u0000\u0000\u1adb\u1adc\u0005"+
57647 		"\u029e\u0000\u0000\u1adc\u1add\u0005\u0018\u0000\u0000\u1add\u1aee\u0003"+
57648 		"\u03b2\u01d9\u0000\u1ade\u1adf\u0005\u02a9\u0000\u0000\u1adf\u1ae0\u0005"+
57649 		"\u0018\u0000\u0000\u1ae0\u1aee\u00032\u0019\u0000\u1ae1\u1ae2\u0005\u028a"+
57650 		"\u0000\u0000\u1ae2\u1ae3\u0005\u0018\u0000\u0000\u1ae3\u1aee\u0003*\u0015"+
57651 		"\u0000\u1ae4\u1ae5\u0005\u02aa\u0000\u0000\u1ae5\u1ae6\u0005\u0018\u0000"+
57652 		"\u0000\u1ae6\u1aee\u0007\u0000\u0000\u0000\u1ae7\u1ae8\u0005\u02ab\u0000"+
57653 		"\u0000\u1ae8\u1ae9\u0005\u0018\u0000\u0000\u1ae9\u1aee\u0007\u0000\u0000"+
57654 		"\u0000\u1aea\u1aeb\u0005\u0156\u0000\u0000\u1aeb\u1aec\u0005\u0018\u0000"+
57655 		"\u0000\u1aec\u1aee\u0003*\u0015\u0000\u1aed\u1adb\u0001\u0000\u0000\u0000"+
57656 		"\u1aed\u1ade\u0001\u0000\u0000\u0000\u1aed\u1ae1\u0001\u0000\u0000\u0000"+
57657 		"\u1aed\u1ae4\u0001\u0000\u0000\u0000\u1aed\u1ae7\u0001\u0000\u0000\u0000"+
57658 		"\u1aed\u1aea\u0001\u0000\u0000\u0000\u1aee\u03af\u0001\u0000\u0000\u0000"+
57659 		"\u1aef\u1af0\u0005\u02cf\u0000\u0000\u1af0\u03b1\u0001\u0000\u0000\u0000"+
57660 		"\u1af1\u1af2\u0007_\u0000\u0000\u1af2\u03b3\u0001\u0000\u0000\u0000\u1af3"+
57661 		"\u1afd\u0005\u02ac\u0000\u0000\u1af4\u1af5\u0005M\u0000\u0000\u1af5\u1afa"+
57662 		"\u0003\u03b6\u01db\u0000\u1af6\u1af7\u0005%\u0000\u0000\u1af7\u1af9\u0003"+
57663 		"\u03b6\u01db\u0000\u1af8\u1af6\u0001\u0000\u0000\u0000\u1af9\u1afc\u0001"+
57664 		"\u0000\u0000\u0000\u1afa\u1af8\u0001\u0000\u0000\u0000\u1afa\u1afb\u0001"+
57665 		"\u0000\u0000\u0000\u1afb\u1afe\u0001\u0000\u0000\u0000\u1afc\u1afa\u0001"+
57666 		"\u0000\u0000\u0000\u1afd\u1af4\u0001\u0000\u0000\u0000\u1afd\u1afe\u0001"+
57667 		"\u0000\u0000\u0000\u1afe\u1b05\u0001\u0000\u0000\u0000\u1aff\u1b00\u0005"+
57668 		"\u016c\u0000\u0000\u1b00\u1b05\u0003*\u0015\u0000\u1b01\u1b02\u0005\u014c"+
57669 		"\u0000\u0000\u1b02\u1b03\u0005C\u0000\u0000\u1b03\u1b05\u0003*\u0015\u0000"+
57670 		"\u1b04\u1af3\u0001\u0000\u0000\u0000\u1b04\u1aff\u0001\u0000\u0000\u0000"+
57671 		"\u1b04\u1b01\u0001\u0000\u0000\u0000\u1b05\u03b5\u0001\u0000\u0000\u0000"+
57672 		"\u1b06\u1b07\u0005\u02a9\u0000\u0000\u1b07\u1b08\u0005\u0018\u0000\u0000"+
57673 		"\u1b08\u1b0d\u00032\u0019\u0000\u1b09\u1b0a\u0005\u028a\u0000\u0000\u1b0a"+
57674 		"\u1b0b\u0005\u0018\u0000\u0000\u1b0b\u1b0d\u0003*\u0015\u0000\u1b0c\u1b06"+
57675 		"\u0001\u0000\u0000\u0000\u1b0c\u1b09\u0001\u0000\u0000\u0000\u1b0d\u03b7"+
57676 		"\u0001\u0000\u0000\u0000\u1b0e\u1b0f\u0005U\u0000\u0000\u1b0f\u1b10\u0005"+
57677 		"\u0161\u0000\u0000\u1b10\u1b1b\u0005\u029d\u0000\u0000\u1b11\u1b12\u0005"+
57678 		"M\u0000\u0000\u1b12\u1b17\u0003\u03ba\u01dd\u0000\u1b13\u1b14\u0005%\u0000"+
57679 		"\u0000\u1b14\u1b16\u0003\u03ba\u01dd\u0000\u1b15\u1b13\u0001\u0000\u0000"+
57680 		"\u0000\u1b16\u1b19\u0001\u0000\u0000\u0000\u1b17\u1b15\u0001\u0000\u0000"+
57681 		"\u0000\u1b17\u1b18\u0001\u0000\u0000\u0000\u1b18\u1b1b\u0001\u0000\u0000"+
57682 		"\u0000\u1b19\u1b17\u0001\u0000\u0000\u0000\u1b1a\u1b0e\u0001\u0000\u0000"+
57683 		"\u0000\u1b1a\u1b11\u0001\u0000\u0000\u0000\u1b1b\u03b9\u0001\u0000\u0000"+
57684 		"\u0000\u1b1c\u1b1d\u0005\u00d5\u0000\u0000\u1b1d\u1b1e\u0005\u0018\u0000"+
57685 		"\u0000\u1b1e\u1b23\u0003\u001c\u000e\u0000\u1b1f\u1b20\u0005%\u0000\u0000"+
57686 		"\u1b20\u1b21\u0005\u029e\u0000\u0000\u1b21\u1b22\u0005\u0018\u0000\u0000"+
57687 		"\u1b22\u1b24\u0003\u03b2\u01d9\u0000\u1b23\u1b1f\u0001\u0000\u0000\u0000"+
57688 		"\u1b23\u1b24\u0001\u0000\u0000\u0000\u1b24\u03bb\u0001\u0000\u0000\u0000"+
57689 		"\u1b25\u1b26\u0005U\u0000\u0000\u1b26\u1b27\u0005\u0161\u0000\u0000\u1b27"+
57690 		"\u1b29\u0005\u029d\u0000\u0000\u1b28\u1b25\u0001\u0000\u0000\u0000\u1b28"+
57691 		"\u1b29\u0001\u0000\u0000\u0000\u1b29\u1b2a\u0001\u0000\u0000\u0000\u1b2a"+
57692 		"\u1b2b\u0005M\u0000\u0000\u1b2b\u1b30\u0003\u03be\u01df\u0000\u1b2c\u1b2d"+
57693 		"\u0005%\u0000\u0000\u1b2d\u1b2f\u0003\u03be\u01df\u0000\u1b2e\u1b2c\u0001"+
57694 		"\u0000\u0000\u0000\u1b2f\u1b32\u0001\u0000\u0000\u0000\u1b30\u1b2e\u0001"+
57695 		"\u0000\u0000\u0000\u1b30\u1b31\u0001\u0000\u0000\u0000\u1b31\u03bd\u0001"+
57696 		"\u0000\u0000\u0000\u1b32\u1b30\u0001\u0000\u0000\u0000\u1b33\u1b34\u0005"+
57697 		"\u00d5\u0000\u0000\u1b34\u1b35\u0005\u0018\u0000\u0000\u1b35\u1b40\u0003"+
57698 		"\u001c\u000e\u0000\u1b36\u1b37\u0005\u029e\u0000\u0000\u1b37\u1b38\u0005"+
57699 		"\u0018\u0000\u0000\u1b38\u1b40\u0003\u03b2\u01d9\u0000\u1b39\u1b3a\u0005"+
57700 		"\u02a9\u0000\u0000\u1b3a\u1b3b\u0005\u0018\u0000\u0000\u1b3b\u1b40\u0003"+
57701 		"2\u0019\u0000\u1b3c\u1b3d\u0005\u028a\u0000\u0000\u1b3d\u1b3e\u0005\u0018"+
57702 		"\u0000\u0000\u1b3e\u1b40\u0003*\u0015\u0000\u1b3f\u1b33\u0001\u0000\u0000"+
57703 		"\u0000\u1b3f\u1b36\u0001\u0000\u0000\u0000\u1b3f\u1b39\u0001\u0000\u0000"+
57704 		"\u0000\u1b3f\u1b3c\u0001\u0000\u0000\u0000\u1b40\u03bf\u0001\u0000\u0000"+
57705 		"\u0000\u1b41\u1b42\u0005M\u0000\u0000\u1b42\u1b43\u0003\u03c2\u01e1\u0000"+
57706 		"\u1b43\u03c1\u0001\u0000\u0000\u0000\u1b44\u1b45\u0005\u00d5\u0000\u0000"+
57707 		"\u1b45\u1b46\u0005\u0018\u0000\u0000\u1b46\u1b4b\u0003\u001c\u000e\u0000"+
57708 		"\u1b47\u1b48\u0005%\u0000\u0000\u1b48\u1b49\u0005\u029e\u0000\u0000\u1b49"+
57709 		"\u1b4a\u0005\u0018\u0000\u0000\u1b4a\u1b4c\u0003\u03b2\u01d9\u0000\u1b4b"+
57710 		"\u1b47\u0001\u0000\u0000\u0000\u1b4b\u1b4c\u0001\u0000\u0000\u0000\u1b4c"+
57711 		"\u03c3\u0001\u0000\u0000\u0000\u1b4d\u1b4e\u0005M\u0000\u0000\u1b4e\u1b52"+
57712 		"\u0003\u03c6\u01e3\u0000\u1b4f\u1b50\u0005U\u0000\u0000\u1b50\u1b52\u0005"+
57713 		"\u02ac\u0000\u0000\u1b51\u1b4d\u0001\u0000\u0000\u0000\u1b51\u1b4f\u0001"+
57714 		"\u0000\u0000\u0000\u1b52\u03c5\u0001\u0000\u0000\u0000\u1b53\u1b54\u0005"+
57715 		"\u00d5\u0000\u0000\u1b54\u1b55\u0005\u0018\u0000\u0000\u1b55\u1b57\u0003"+
57716 		"\u001c\u000e\u0000\u1b56\u1b58\u0005\u02a8\u0000\u0000\u1b57\u1b56\u0001"+
57717 		"\u0000\u0000\u0000\u1b57\u1b58\u0001\u0000\u0000\u0000\u1b58\u1b62\u0001"+
57718 		"\u0000\u0000\u0000\u1b59\u1b5a\u0005%\u0000\u0000\u1b5a\u1b5f\u0003\u03c8"+
57719 		"\u01e4\u0000\u1b5b\u1b5c\u0005%\u0000\u0000\u1b5c\u1b5e\u0003\u03c8\u01e4"+
57720 		"\u0000\u1b5d\u1b5b\u0001\u0000\u0000\u0000\u1b5e\u1b61\u0001\u0000\u0000"+
57721 		"\u0000\u1b5f\u1b5d\u0001\u0000\u0000\u0000\u1b5f\u1b60\u0001\u0000\u0000"+
57722 		"\u0000\u1b60\u1b63\u0001\u0000\u0000\u0000\u1b61\u1b5f\u0001\u0000\u0000"+
57723 		"\u0000\u1b62\u1b59\u0001\u0000\u0000\u0000\u1b62\u1b63\u0001\u0000\u0000"+
57724 		"\u0000\u1b63\u03c7\u0001\u0000\u0000\u0000\u1b64\u1b65\u0005\u02aa\u0000"+
57725 		"\u0000\u1b65\u1b66\u0005\u0018\u0000\u0000\u1b66\u1b6b\u0007\u0000\u0000"+
57726 		"\u0000\u1b67\u1b68\u0005\u02ab\u0000\u0000\u1b68\u1b69\u0005\u0018\u0000"+
57727 		"\u0000\u1b69\u1b6b\u0007\u0000\u0000\u0000\u1b6a\u1b64\u0001\u0000\u0000"+
57728 		"\u0000\u1b6a\u1b67\u0001\u0000\u0000\u0000\u1b6b\u03c9\u0001\u0000\u0000"+
57729 		"\u0000\u1b6c\u1b6d\u00054\u0000\u0000\u1b6d\u1b6e\u0005\u0122\u0000\u0000"+
57730 		"\u1b6e\u1b6f\u0003\u039a\u01cd\u0000\u1b6f\u03cb\u0001\u0000\u0000\u0000"+
57731 		"\u1b70\u1b71\u00053\u0000\u0000\u1b71\u1b72\u0005\u0122\u0000\u0000\u1b72"+
57732 		"\u1b7e\u0003\u039a\u01cd\u0000\u1b73\u1b7f\u0003\u03ce\u01e7\u0000\u1b74"+
57733 		"\u1b75\u0005M\u0000\u0000\u1b75\u1b7a\u0003\u03d0\u01e8\u0000\u1b76\u1b77"+
57734 		"\u0005%\u0000\u0000\u1b77\u1b79\u0003\u03d0\u01e8\u0000\u1b78\u1b76\u0001"+
57735 		"\u0000\u0000\u0000\u1b79\u1b7c\u0001\u0000\u0000\u0000\u1b7a\u1b78\u0001"+
57736 		"\u0000\u0000\u0000\u1b7a\u1b7b\u0001\u0000\u0000\u0000\u1b7b\u1b7f\u0001"+
57737 		"\u0000\u0000\u0000\u1b7c\u1b7a\u0001\u0000\u0000\u0000\u1b7d\u1b7f\u0003"+
57738 		"\u03d4\u01ea\u0000\u1b7e\u1b73\u0001\u0000\u0000\u0000\u1b7e\u1b74\u0001"+
57739 		"\u0000\u0000\u0000\u1b7e\u1b7d\u0001\u0000\u0000\u0000\u1b7f\u03cd\u0001"+
57740 		"\u0000\u0000\u0000\u1b80\u1b81\u0007)\u0000\u0000\u1b81\u03cf\u0001\u0000"+
57741 		"\u0000\u0000\u1b82\u1b83\u0005\u00d5\u0000\u0000\u1b83\u1b88\u0005\u0018"+
57742 		"\u0000\u0000\u1b84\u1b89\u0003\u001c\u000e\u0000\u1b85\u1b86\u0003\u03b0"+
57743 		"\u01d8\u0000\u1b86\u1b87\u0005\u02a7\u0000\u0000\u1b87\u1b89\u0001\u0000"+
57744 		"\u0000\u0000\u1b88\u1b84\u0001\u0000\u0000\u0000\u1b88\u1b85\u0001\u0000"+
57745 		"\u0000\u0000\u1b89\u1b91\u0001\u0000\u0000\u0000\u1b8a\u1b8b\u0005\u029c"+
57746 		"\u0000\u0000\u1b8b\u1b8c\u0005\u0018\u0000\u0000\u1b8c\u1b92\u0003\u001c"+
57747 		"\u000e\u0000\u1b8d\u1b8f\u0003\u03d2\u01e9\u0000\u1b8e\u1b90\u0003\u03d2"+
57748 		"\u01e9\u0000\u1b8f\u1b8e\u0001\u0000\u0000\u0000\u1b8f\u1b90\u0001\u0000"+
57749 		"\u0000\u0000\u1b90\u1b92\u0001\u0000\u0000\u0000\u1b91\u1b8a\u0001\u0000"+
57750 		"\u0000\u0000\u1b91\u1b8d\u0001\u0000\u0000\u0000\u1b91\u1b92\u0001\u0000"+
57751 		"\u0000\u0000\u1b92\u1ba8\u0001\u0000\u0000\u0000\u1b93\u1b94\u0005\u02a9"+
57752 		"\u0000\u0000\u1b94\u1b95\u0005\u0018\u0000\u0000\u1b95\u1ba8\u00032\u0019"+
57753 		"\u0000\u1b96\u1b97\u0005\u028a\u0000\u0000\u1b97\u1b98\u0005\u0018\u0000"+
57754 		"\u0000\u1b98\u1ba8\u0003*\u0015\u0000\u1b99\u1b9a\u0005\u00aa\u0000\u0000"+
57755 		"\u1b9a\u1b9b\u0005\u0018\u0000\u0000\u1b9b\u1ba8\u0003\u039a\u01cd\u0000"+
57756 		"\u1b9c\u1b9d\u0005\u02ab\u0000\u0000\u1b9d\u1b9e\u0005\u0018\u0000\u0000"+
57757 		"\u1b9e\u1ba8\u0007\u0000\u0000\u0000\u1b9f\u1ba0\u0005\u02aa\u0000\u0000"+
57758 		"\u1ba0\u1ba1\u0005\u0018\u0000\u0000\u1ba1\u1ba8\u0007\u0000\u0000\u0000"+
57759 		"\u1ba2\u1ba3\u0005\u0156\u0000\u0000\u1ba3\u1ba4\u0005\u0018\u0000\u0000"+
57760 		"\u1ba4\u1ba8\u0003*\u0015\u0000\u1ba5\u1ba6\u0005\u00f9\u0000\u0000\u1ba6"+
57761 		"\u1ba8\u0005\u0156\u0000\u0000\u1ba7\u1b82\u0001\u0000\u0000\u0000\u1ba7"+
57762 		"\u1b93\u0001\u0000\u0000\u0000\u1ba7\u1b96\u0001\u0000\u0000\u0000\u1ba7"+
57763 		"\u1b99\u0001\u0000\u0000\u0000\u1ba7\u1b9c\u0001\u0000\u0000\u0000\u1ba7"+
57764 		"\u1b9f\u0001\u0000\u0000\u0000\u1ba7\u1ba2\u0001\u0000\u0000\u0000\u1ba7"+
57765 		"\u1ba5\u0001\u0000\u0000\u0000\u1ba8\u03d1\u0001\u0000\u0000\u0000\u1ba9"+
57766 		"\u1baa\u0007`\u0000\u0000\u1baa\u03d3\u0001\u0000\u0000\u0000\u1bab\u1bac"+
57767 		"\u00059\u0000\u0000\u1bac\u1bad\u0005\u0156\u0000\u0000\u1bad\u1bb2\u0003"+
57768 		"*\u0015\u0000\u1bae\u1baf\u00054\u0000\u0000\u1baf\u1bb0\u0005\u0156\u0000"+
57769 		"\u0000\u1bb0\u1bb2\u0003*\u0015\u0000\u1bb1\u1bab\u0001\u0000\u0000\u0000"+
57770 		"\u1bb1\u1bae\u0001\u0000\u0000\u0000\u1bb2\u03d5\u0001\u0000\u0000\u0000"+
57771 		"\u1bb3\u1bb8\u0005\u02ae\u0000\u0000\u1bb4\u1bb5\u0005M\u0000\u0000\u1bb5"+
57772 		"\u1bb6\u0005\u02af\u0000\u0000\u1bb6\u1bb7\u0005\u0018\u0000\u0000\u1bb7"+
57773 		"\u1bb9\u0003\u00dam\u0000\u1bb8\u1bb4\u0001\u0000\u0000\u0000\u1bb8\u1bb9"+
57774 		"\u0001\u0000\u0000\u0000\u1bb9\u03d7\u0001\u0000\u0000\u0000\u0337\u0413"+
57775 		"\u0416\u0426\u0432\u0438\u043a\u043c\u0443\u0449\u044b\u0453\u0457\u045f"+
57776 		"\u0463\u0469\u0474\u0479\u0484\u0490\u0494\u04a1\u04a8\u04ad\u04b2\u04b9"+
57777 		"\u04c0\u04c9\u04ce\u04d0\u04d7\u04e2\u04e6\u04f7\u0502\u0508\u050f\u0513"+
57778 		"\u051d\u0523\u0525\u052a\u0537\u0545\u0547\u0550\u055d\u056c\u056e\u0575"+
57779 		"\u057c\u0585\u058c\u0595\u059b\u059e\u05c1\u05c3\u05cf\u05d7\u05dd\u05e7"+
57780 		"\u05ee\u05f4\u05f9\u0600\u0604\u0611\u0621\u062c\u0631\u063a\u063e\u0647"+
57781 		"\u064f\u0653\u0660\u0665\u0671\u0676\u067f\u0683\u068a\u0691\u0695\u069a"+
57782 		"\u069d\u06ad\u06b6\u06c2\u06c4\u06c9\u06cd\u06d0\u06d5\u06de\u06e3\u06eb"+
57783 		"\u06f7\u0700\u0706\u070e\u0711\u0714\u071f\u0727\u0730\u0738\u0740\u0744"+
57784 		"\u0751\u0753\u075c\u0771\u0776\u0782\u078f\u0798\u07a5\u07ba\u07c3\u07c7"+
57785 		"\u07e0\u07ea\u07f4\u07fd\u080b\u0813\u0819\u0821\u082c\u0833\u083d\u0842"+
57786 		"\u0863\u086c\u086f\u0876\u087d\u0884\u088d\u0894\u089a\u08a1\u08a7\u08ae"+
57787 		"\u08b4\u08bb\u08c1\u08c8\u08cf\u08d1\u08d6\u08dd\u08e7\u08f3\u08fa\u08fe"+
57788 		"\u0900\u0903\u0907\u090a\u0910\u0915\u0920\u0924\u0926\u0929\u092e\u093d"+
57789 		"\u0941\u094d\u0952\u095b\u0962\u0967\u0976\u0980\u098b\u098e\u099a\u099e"+
57790 		"\u09b0\u09b5\u09b9\u09be\u09c2\u09c9\u09ce\u09d6\u09df\u09e3\u09e7\u09ea"+
57791 		"\u09ed\u09f0\u09fe\u0a03\u0a08\u0a1a\u0a1c\u0a27\u0a2f\u0a34\u0a3d\u0a44"+
57792 		"\u0a4a\u0a53\u0a56\u0a59\u0a5c\u0a65\u0a6d\u0a76\u0a7d\u0a80\u0a88\u0a8a"+
57793 		"\u0a8d\u0a97\u0a9c\u0aa1\u0aa5\u0aa8\u0aac\u0aaf\u0ab4\u0abc\u0ac5\u0acd"+
57794 		"\u0ad0\u0ad3\u0ad6\u0adc\u0ae0\u0ae8\u0afe\u0b00\u0b05\u0b07\u0b0e\u0b10"+
57795 		"\u0b14\u0b1c\u0b2a\u0b33\u0b42\u0b48\u0b4c\u0b53\u0b67\u0b70\u0b73\u0b89"+
57796 		"\u0b8b\u0b96\u0ba6\u0bab\u0baf\u0bb4\u0bbb\u0bc5\u0bcc\u0bcf\u0bda\u0bde"+
57797 		"\u0be3\u0be9\u0bee\u0bf1\u0bfc\u0c05\u0c09\u0c18\u0c1f\u0c2b\u0c2e\u0c32"+
57798 		"\u0c36\u0c3f\u0c42\u0c45\u0c4c\u0c51\u0c5a\u0c6e\u0c70\u0c76\u0c7d\u0c82"+
57799 		"\u0c89\u0c8d\u0c93\u0c99\u0c9e\u0ca4\u0cab\u0cb1\u0cba\u0cc1\u0cc3\u0cc9"+
57800 		"\u0ccc\u0ccf\u0cd4\u0cdb\u0ce4\u0ce9\u0cf2\u0cf4\u0cf9\u0d02\u0d04\u0d07"+
57801 		"\u0d19\u0d1b\u0d25\u0d2c\u0d2f\u0d33\u0d3b\u0d3e\u0d42\u0d49\u0d50\u0d5b"+
57802 		"\u0d77\u0d7f\u0d91\u0d93\u0d9a\u0d9d\u0d9f\u0da6\u0da8\u0dad\u0db4\u0db9"+
57803 		"\u0dbc\u0dc0\u0dc9\u0dcc\u0dd4\u0dd8\u0ddc\u0de1\u0de6\u0dea\u0df5\u0dfc"+
57804 		"\u0e02\u0e06\u0e0a\u0e12\u0e14\u0e17\u0e1e\u0e23\u0e2c\u0e31\u0e39\u0e40"+
57805 		"\u0e48\u0e51\u0e5d\u0e6d\u0e70\u0e72\u0e75\u0e78\u0e7b\u0e7e\u0e90\u0e95"+
57806 		"\u0e9a\u0e9f\u0ea2\u0ea6\u0eae\u0eba\u0ebd\u0ec0\u0ecf\u0ed2\u0ed5\u0ed9"+
57807 		"\u0edd\u0ee7\u0eea\u0eed\u0ef8\u0efd\u0f03\u0f07\u0f0a\u0f15\u0f18\u0f1d"+
57808 		"\u0f1f\u0f2b\u0f2e\u0f35\u0f38\u0f3c\u0f40\u0f43\u0f46\u0f4a\u0f55\u0f58"+
57809 		"\u0f5f\u0f62\u0f66\u0f6d\u0f72\u0f7d\u0f82\u0f84\u0f91\u0f9c\u0fa4\u0fa7"+
57810 		"\u0fab\u0fb1\u0fbb\u0fc5\u0fca\u0fd6\u0fdc\u0fdf\u0fe2\u0fe5\u0fe8\u0feb"+
57811 		"\u0fee\u0ff2\u0ff7\u0ffe\u1005\u1012\u101e\u1024\u102d\u1030\u1034\u1038"+
57812 		"\u1041\u1046\u104f\u1051\u1056\u1058\u105f\u106a\u1073\u107a\u107c\u1085"+
57813 		"\u108a\u1091\u1098\u10aa\u10af\u10b3\u10ce\u10d1\u10da\u10f3\u10f6\u10f8"+
57814 		"\u10fd\u1105\u111a\u111c\u1125\u1128\u1137\u113c\u1145\u1159\u115c\u1160"+
57815 		"\u116c\u116e\u117b\u117d\u1187\u11b4\u11ba\u11c3\u11d2\u11d6\u11df\u11e5"+
57816 		"\u11ef\u11f8\u1203\u120f\u1211\u1219\u1227\u122f\u1234\u1236\u123f\u1245"+
57817 		"\u125a\u1261\u1269\u126e\u1270\u1299\u129e\u12ad\u12b5\u12cc\u12d5\u12dd"+
57818 		"\u12e8\u12ed\u12f5\u1300\u130b\u1314\u131b\u131f\u1325\u133a\u1348\u134b"+
57819 		"\u1356\u135b\u135e\u1362\u1365\u1369\u136c\u136f\u1375\u1378\u137b\u1381"+
57820 		"\u1384\u138c\u1390\u1393\u1398\u13a1\u13ac\u13af\u13b2\u13b6\u13bb\u13bf"+
57821 		"\u13cb\u13cf\u13d7\u13de\u13e2\u13e5\u13e9\u13ed\u13f0\u13f3\u13f7\u13fa"+
57822 		"\u13fd\u1401\u1404\u1407\u1412\u1416\u141b\u141f\u1427\u142b\u1430\u1434"+
57823 		"\u1438\u143c\u143f\u1442\u1445\u1448\u144b\u1452\u1454\u145a\u1462\u1466"+
57824 		"\u146a\u146d\u1470\u1472\u1476\u147a\u147d\u1481\u148b\u148e\u1490\u1494"+
57825 		"\u14a3\u14aa\u14af\u14b2\u14b6\u14ba\u14be\u14c1\u14c7\u14ca\u14cd\u14d3"+
57826 		"\u14d6\u14da\u14df\u14e5\u14e7\u14ed\u14f9\u150b\u1510";
57827 	private static final String _serializedATNSegment3 =
57828 		"\u1518\u151d\u151f\u1526\u152d\u1530\u1538\u1562\u1564\u1579\u1580\u15b8"+
57829 		"\u15be\u15c6\u15c9\u15d3\u15d5\u15d7\u15dc\u15de\u15e0\u15e6\u15e8\u15ef"+
57830 		"\u15f5\u15f7\u15f9\u15fb\u1600\u1604\u160c\u160e\u1618\u161a\u161e\u1622"+
57831 		"\u1624\u1629\u162b\u162e\u1637\u1641\u164d\u1652\u165a\u1660\u1664\u1669"+
57832 		"\u1671\u1677\u167b\u1680\u1684\u168b\u1694\u169b\u16a2\u16aa\u16ae\u16b3"+
57833 		"\u16bb\u16bf\u16c3\u16c8\u16d0\u16d4\u16d9\u16de\u16e6\u16ea\u16ee\u16f3"+
57834 		"\u16fb\u16ff\u1707\u171c\u172e\u1739\u174e\u1768\u177d\u1781\u1786\u178f"+
57835 		"\u1791\u17a3\u17b7\u17c2\u17d5\u17d9\u17e1\u17e5\u17f0\u180c\u1812\u182f"+
57836 		"\u1836\u183a\u183f\u1849\u1854\u185e\u1867\u187d\u188a\u1891\u189d\u18aa"+
57837 		"\u18b7\u18c2\u18ce\u18d4\u18da\u18e0\u18ec\u18f9\u1906\u1912\u1918\u191e"+
57838 		"\u1925\u1929\u1936\u1943\u194c\u1956\u1986\u1990\u1992\u199e\u19a4\u19ac"+
57839 		"\u19af\u19b8\u19bb\u19c8\u19cb\u19d2\u19d8\u19df\u19e7\u19ea\u19f5\u19f8"+
57840 		"\u1a01\u1a0a\u1a12\u1a14\u1a1d\u1a22\u1a24\u1a2a\u1a35\u1a38\u1a3a\u1a42"+
57841 		"\u1a48\u1a52\u1a5d\u1a62\u1a6f\u1a75\u1a7e\u1a89\u1a8f\u1a94\u1a96\u1a9d"+
57842 		"\u1aa2\u1ab3\u1abd\u1ac3\u1acb\u1ace\u1ad6\u1ad9\u1aed\u1afa\u1afd\u1b04"+
57843 		"\u1b0c\u1b17\u1b1a\u1b23\u1b28\u1b30\u1b3f\u1b4b\u1b51\u1b57\u1b5f\u1b62"+
57844 		"\u1b6a\u1b7a\u1b7e\u1b88\u1b8f\u1b91\u1ba7\u1bb1\u1bb8";
57845 	public static final String _serializedATN = Utils.join(
57846 		new String[] {
57847 			_serializedATNSegment0,
57848 			_serializedATNSegment1,
57849 			_serializedATNSegment2,
57850 			_serializedATNSegment3
57851 		},
57852 		""
57853 	);
57854 	public static final ATN _ATN =
57855 		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
57856 	static {
57857 		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
57858 		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
57859 			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
57860 		}
57861 	}
57862 }